'use strict'; define(['app', 'angular'], function (app, angular) { app.directive('tableColumnGenerator', ['$compile', '$log', '$rootScope', '$tableProvider', '$filter', function ($compile, $log, $rootScope, $tableProvider, $filter) { return { restrict : "A", compile : function (tElement, tAttrs) { return function (scope, element, attrs) { scope.data = scope[attrs["tableColumnGenerator"]]; var makeTag = ""; var treeStartToken = "└"; scope.tableConfigs.forEach(function (tableConfig, index) { if (tableConfig.colSpan > 0) { return; } // 하위 단계 표시 추가 var myToken = ""; if ( scope.data.depth > 0) { for(var i=0; i'; if (tableConfig.dType === "checkbox") { // 체크 박스일때 /*if (scope.data.defaultYn) { makeTag += ''; } else {*/ makeTag += ''; //} tableConfig.hChecked = false; } else if (tableConfig.dType === "radio") { // 라디오 버튼일때 makeTag += ''; } else if (tableConfig.dType === "renderer") { // 랜더러 일때 switch (tableConfig.dRenderer) { // 프로젝트 상태 case "PROJECT_STATUS" : switch (scope.data.status) { case "01": makeTag += "대기"; break; case "02": makeTag += "진행"; break; case "03": makeTag += "종료"; break; } break; // 프로젝트 관리자 정보 case "PROJECT_MANAGER" : makeTag += '
'; break; // 프로젝트 이름(프로젝트 리스트에서 사용) case "PROJECT_NAME" : if (!scope.data.parentYn) { if ($rootScope.workProject != null && $rootScope.workProject.id == scope.data.id) { makeTag += "" + myToken + scope.data.name.replace(/"; } else { makeTag += "" + myToken + scope.data.name.replace(/"; } }else { makeTag += "" + myToken + scope.data.name.replace(/"; } break; // 프로젝트 이름(프로젝트 리스트에서 사용) case "PROJECT_BASIC_NAME" : if (scope.data.projectVo != null) { makeTag += "" + myToken + scope.data.projectVo.name.replace(/"; } break; // 사용 파트너 이름(이슈 유형 리스트에서 사용) case "USE_PARTNERS" : if (scope.data.usePartnerVos != null) { var usePartners = []; for (var i=0; i"; } break; // 프로젝트 목록에서 사용자 정의 필드 설정 표시 case "CUSTOM_FIELD_CONFIG" : // 관리자만 수정할 수 있다. if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_PROJECT')) { makeTag += ''; } break; // 프로젝트 팀원 정보 case "PROJECT_USER": makeTag += '
'; break; case "PROJECT_DEPARTMENT": makeTag += "
    "; makeTag += "
    "; angular.forEach(scope.data.projectDepartmentVos, function (departments) { makeTag += "
  • " + departments.departmentName + "
  • "; }); makeTag += "
    "; makeTag += "
"; break; case "ISSUE_STATUS_TYPE" : switch (scope.data.issueStatusType) { case "READY": makeTag += "대기"; break; case "OPEN": makeTag += "진행"; break; case "CLOSE": makeTag += "종료"; break; } break; case "COLOR" : makeTag += ""; break; case "USE_WORKFLOW_LIST" : makeTag += "
    "; angular.forEach(scope.data.workflowVos, function (workflowVo) { makeTag += "
  • " + workflowVo.name + "
  • "; }); makeTag += "
"; break; case "USE_ISSUE_TYPE_LIST" : makeTag += "
    "; angular.forEach(scope.data.issueTypeVos, function (issueTypeVo) { makeTag += "
  • " + issueTypeVo.name + "
  • "; }); makeTag += "
"; break; case "USE_DEPARTMENT_LIST" : makeTag += "
    "; if (scope.data.managerYn !== 'Y'){ if(scope.data.departmentVos != null && scope.data.departmentVos.length == 0){ //속해있는 부서가 없을 경우 makeTag += "
    부서를 선택해 주세요.
    "; }else{ makeTag += "
    "; angular.forEach(scope.data.departmentVos, function (departments) { makeTag += "
  • " + departments.departmentName + "
  • "; }); makeTag += "
    "; } makeTag += "
"; } break; case "WORKFLOW_DEPARTMENT_LIST" : makeTag += "
    "; if(scope.data.issueStatusVos != null && scope.data.issueStatusVos.length > 0){ makeTag += "
    "; angular.forEach(scope.data.issueStatusVos, function (issueStatusVo) { let workflowDepartments = new Set(issueStatusVo.workflowDepartmentVos); angular.forEach(workflowDepartments, function (workflowDepartmentVo) { makeTag += "
  • " + workflowDepartmentVo.departmentVo.departmentName + "
  • "; }); }); makeTag += "
    "; } makeTag += "
"; break; case "CONFIG" : makeTag += ''; break; // 이슈 목록에서 기간 표시 case "ISSUE_DUE_DATE" : if (!$rootScope.isDefined(scope.data.startDate) && !$rootScope.isDefined(scope.data.completeDate)) { makeTag += "기간 없음"; } else { makeTag += '' + scope.data.startDate + ' ~ ' + scope.data.completeDate + ''; } break; // 하위이슈 카운트 case "DOWN_ISSUE_COUNT" : makeTag += '' + scope.data.downIssueCount + ' / ' + scope.data.downIssueAllCount + ''; break; // 프로젝트 기간 표시 case "PROJECT_DUE_DATE" : makeTag += "" + scope.data.startDate + " ~ " + scope.data.endDate + ""; break; case "ISSUE_DETAIL_FLOATING" : makeTag += '
'; makeTag += ' '; makeTag += '' + scope.data.projectKey + ' - ' + scope.data.issueNumber + ''; makeTag += ' / '; makeTag += "" + scope.data.issueStatusName + ""; makeTag += ' / '; makeTag += '' + scope.data.projectName + ''; makeTag += '
'; makeTag += '
' + scope.data.title.replace(/'; makeTag += '
'; makeTag += ''; makeTag += ''; makeTag += '' + scope.data.issueCommentCount + ''; makeTag += ''; makeTag += ''; makeTag += ''; makeTag += '' + scope.data.attachedFileCount + ''; makeTag += ''; makeTag += '
'; break; /* case "ISSUE_DETAIL_MOVE" : makeTag += "" + scope.data.title + ""; break;*/ // 연관 이슈 이동(제목) // case "ISSUE_RELATION_MOVE" : // makeTag += "" + scope.data.title + ""; // break; // 연관이슈 구분 // case "ISSUE_RELATION_TYPE": // makeTag += "" + scope.data.relationIssueTypeName + ""; // break; // 연관이슈 삭제 // case "ISSUE_RELATION_DELETE": // if (scope.data.modifyPermissionCheck) { // makeTag += ''; // } // break; // 연관 이슈 우선순위 // case "REL_COMMON_PRIORITY" : // makeTag += ""; // break; // 연관 이슈 중요도 // case "REL_COMMON_SEVERITY" : // makeTag += ""; // break; // 연관 이슈 등록자 // case "REL_REGISTER": // scope.data.registerVos = [scope.data.issueRelation.registerVo]; // makeTag += '
'; // break; // // break; // 연관 이슈 담당부서 // case "REL_ISSUE_DEPARTMENT" : // makeTag += "
    "; // makeTag += "
    "; // angular.forEach(scope.data.issueRelation.departmentVos, function (departments) { // makeTag += "
  • " + departments.departmentName + "
  • "; // }); // makeTag += "
    "; // makeTag += "
"; // break; // 연관 이슈 목록에서 기간 표시 // case "REL_ISSUE_DUE_DATE" : // if (!$rootScope.isDefined(scope.data.issueRelation.startDate) && !$rootScope.isDefined(scope.data.issueRelation.completeDate)) { // makeTag += "기간 없음"; // } // else { // makeTag += "" + scope.data.issueRelation.startDate + " ~ " + scope.data.issueRelation.completeDate + ""; // } // break; // 연관 이슈 사용자 정의 필드 // case "REL_ISSUE_CUSTOM_FIELD_VALUE_VIEW" : // var values = []; // // for (var count in scope.data.issueRelation.issueCustomFieldValueVos) { // var issueCustomFieldValueVo = scope.data.issueRelation.issueCustomFieldValueVos[count]; // // 테이블 설정에서 dName 부분에 사용자 정의 필드 id 를 넣고 해당 값을 추출한다. // if (tableConfig.columnHint.id == issueCustomFieldValueVo.customFieldVo.id) { // values.push(issueCustomFieldValueVo.useValue); // } // } // angular.forEach(values, function (value) { // makeTag += '' + value + '
'; // }); // // break; // 하위 이슈 이동(제목) // case "ISSUE_DOWN_MOVE" : // makeTag += "" + scope.data.title + ""; // break; // // // 하위 이슈 타입 // case "ISSUE_DOWN_STATUS_TYPE" : // makeTag += "" + scope.data.issueStatusVo.name + ""; // break; // // 하위 이슈 삭제 // case "ISSUE_DOWN_DELETE": // if (scope.data.modifyPermissionCheck) { // makeTag += ''; // } // break; // // 하위 이슈 우선 순위 // case "DOWN_COMMON_PRIORITY" : // makeTag += ""; // break; // // 하위 이슈 중요도 // case "DOWN_COMMON_SEVERITY" : // makeTag += ""; // break; // // 하위 이슈 담당부서 // case "DOWN_ISSUE_DEPARTMENT" : // makeTag += "
    "; // makeTag += "
    "; // angular.forEach(scope.data.departmentVos, function (departments) { // makeTag += "
  • " + departments.departmentName + "
  • "; // }); // makeTag += "
    "; // makeTag += "
"; // break; // // 하위 이슈 등록자 // case "DOWN_REGISTER": // scope.data.registerVos = [scope.data.registerVo]; // makeTag += '
'; // break; // // 하위 이슈 기간 // case "DOWN_ISSUE_DUE_DATE" : // if (!$rootScope.isDefined(scope.data.startDate) && !$rootScope.isDefined(scope.data.completeDate)) { // makeTag += "기간 없음"; // } // else { // makeTag += "" + scope.data.startDate + " ~ " + scope.data.completeDate + ""; // } // break; // // 하위 이슈 사용자 정의 필드 // case "DOWN_ISSUE_CUSTOM_FIELD_VALUE_VIEW" : // var values = []; // // for (var count in scope.data.issueCustomFieldValueVos) { // var issueCustomFieldValueVo = scope.data.issueCustomFieldValueVos[count]; // // 테이블 설정에서 dName 부분에 사용자 정의 필드 id 를 넣고 해당 값을 추출한다. // if (tableConfig.columnHint.id == issueCustomFieldValueVo.customFieldVo.id) { // values.push(issueCustomFieldValueVo.useValue); // } // } // angular.forEach(values, function (value) { // makeTag += '' + value + '
'; // }); // // break; // 이름을 클릭하면 수정 팝업 표시 case "COMMON_MODIFY" : if (scope.data.modifyPermissionCheck) { makeTag += "" + scope.data.name.replace(/"; } else { makeTag += "" + scope.data.name + ""; } break; // 설정 버튼 클릭하면 수정 팝업 표시 case "BUTTON_MODIFY" : makeTag += ''; break; // 사용자 정의 필드 옵션 표시 case "CUSTOM_FIELD_OPTION" : switch (scope.data.customFieldType) { case "INPUT" : makeTag += "문자열 필드"; break; case "MULTI_SELECT" : makeTag += "다중 선택 필드"; break; case "SINGLE_SELECT" : makeTag += "단일 선택 필드"; break; case "NUMBER" : makeTag += "숫자 필드"; break; case "DATETIME" : makeTag += "날짜 필드"; break; case "IP_ADDRESS" : makeTag += "IP ADDRESS 필드"; break; case "EMAIL" : makeTag += "이메일 필드"; break; case "SITE" : makeTag += "URL 필드"; break; case "TEL" : makeTag += "전화번호 필드"; break; } break; // 이슈 제목 case "ISSUE_TITLE" : scope.data.title = scope.data.title.replace(/'; makeTag += ' / '; makeTag += "" + scope.data.issueStatusName + ""; if (scope.data.isApi === 'Y') { makeTag += '  / '; makeTag += "" + "API" + ""; } makeTag += '
'; makeTag += '
' + '
'; makeTag += '
'; makeTag += ''; makeTag += ''; makeTag += '' + scope.data.issueCommentCount + ''; makeTag += ''; makeTag += ''; makeTag += ''; makeTag += '' + scope.data.attachedFileCount + ''; makeTag += ''; makeTag += '
'; break; // 우선 순위 case "COMMON_PRIORITY" : makeTag += ""; break; // 중요도 case "COMMON_SEVERITY" : makeTag += ""; break; // 이슈 유형 case "COMMON_ISSUE_TYPE" : makeTag += ""; break; // 담당 부서 case "ISSUE_DEPARTMENT" : makeTag += "
    "; makeTag += "
    "; angular.forEach(scope.data.departmentVos, function (departments) { scope.data.departmentName = departments.departmentName; makeTag += "
  • " + "
  • "; }); makeTag += "
    "; makeTag += "
"; break; // 담당자 case "ISSUE_USER" : makeTag += '
'; break; // 등록자 /* case "REGISTER" : scope.data.registerVos = [scope.data.registerVo]; makeTag += '
'; break;*/ case "REGISTER" : scope.data.registerVos = [scope.data.registerVo]; makeTag += "
    "; makeTag += "
    "; angular.forEach(scope.data.registerVos, function (registers) { makeTag += "
  • " + registers.name + "
  • "; makeTag += "
  • " + registers.account + "
  • "; }); makeTag += "
    "; makeTag += "
"; break; // 업체 case "USE_COMPANY" : if (scope.data.companyName !== null) { makeTag += ""; }else { makeTag += ""; } break; // ISP case "USE_ISP" : if (scope.data.ispName !== null) { makeTag += ""; }else { makeTag += ""; } break; // 호스팅 case "USE_HOSTING" : if (scope.data.hostingName !== null) { makeTag += ""; }else { makeTag += ""; } break; case "WORKFLOW_NAME": makeTag += "" + scope.data.workflowVo.name + ""; break; case "USER_STATUS" : switch (scope.data.status) { case "01": makeTag += "활성"; break; case "02": makeTag += "비활성"; break; case "03": makeTag += "탈퇴"; break; } break; case "USER_EDIT" : makeTag += ""; break; case "PROJECT_PROCESS_RATE" : makeTag += "" + scope.data.projectProcessRate + "%"; break; case "TARGET_REMOVE" : makeTag += ""; break; case "PROJECT_USER_NAME" : makeTag += "관리자 "; makeTag += "" + scope.data.name + ""; break; case "FILE_SIZE" : makeTag += "{{data.size/1024/1024 | number:2}} MB"; break; case "FILE_REMOVE" : makeTag += ""; break; case "USER_LEVEL_MODIFY": if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_WORKSPACE')) { makeTag += "" + scope.data.levelName + ""; } else { makeTag += "" + scope.data.levelName + ""; } break; case "WORKSPACE_SETTING_PERM_YN" : makeTag += ""; break; case "PROJECT_SETTING_PERM_YN" : makeTag += ""; break; case "ISSUE_SETTING_PERM_YN" : makeTag += ""; break; case "ISSUE_SYSTEM_SETTING_PERM_YN" : makeTag += ""; break; case "PARTNER_SETTING_PERM_YN" : makeTag += ""; break; case "API_PERM_YN" : makeTag += ""; break; case "NOTICE_PERM_YN" : makeTag += ""; break; case "FAQ_PERM_YN" : makeTag += ""; break; case "QNA_PERM_YN" : makeTag += ""; break; case "EVENT_PERM_YN" : makeTag += ""; break; case "GUIDE_PERM_YN" : makeTag += ""; break; case "DEPARTMENT_MODIFY": if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_WORKSPACE')) { makeTag += "" + scope.data.departmentName + ""; } else { makeTag += "" + scope.data.departmentName + ""; } break; case "DEPARTMENT_EX": makeTag += "
" + scope.data.departmentDescription + "
"; break; case "DEPARTMENT_COUNT": if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_WORKSPACE')) { makeTag += "" + scope.data.departmentCount + ""; } else { makeTag += "" + scope.data.departmentCount + ""; } break; case "DEPARTMENT_OPTION": makeTag +=""; /*if (scope.data.departmentId != null){ makeTag +=""; } else{ makeTag +=""; }*/ break; case "LEVEL_OPTION" : //makeTag += ""; if (scope.data.managerYn === 'Y'){ makeTag +="최고관리자"; } else { makeTag +=""; } break; case "WORKSPACE_USE_YN" : if (scope.data.managerYn !== 'Y'){ makeTag += ""; } break; case "COMPANYFIELD_MODIFY" : if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_CUSTOME_FIELD')) { makeTag += "" + scope.data.name.replace(/"; } else { makeTag += "" + scope.data.name + ""; } break; case "ISPFIELD_MODIFY" : if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_CUSTOME_FIELD')) { makeTag += "" + scope.data.name.replace(/"; } else { makeTag += "" + scope.data.name + ""; } break; case "HOSTINGFIELD_MODIFY" : if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_CUSTOME_FIELD')) { makeTag += "" + scope.data.name.replace(/"; } else { makeTag += "" + scope.data.name + ""; } break; case "ISSUE_CUSTOM_FIELD_VALUE_VIEW" : var values = []; let valueMap = new Map(); //scope.data.useValue = ""; for (var count in scope.data.issueCustomFieldValueVos) { var issueCustomFieldValueVo = scope.data.issueCustomFieldValueVos[count]; valueMap.set("useValue"+count, issueCustomFieldValueVo.useValue); $window[scope.data.useValue+count] = valueMap.get("useValue"+count); //window["scope.data.useValue"+count] = scope.data.useValue+count; //console.log(scope.data.useValue+count); /*window[scope.data.useValue+count] = valueMap.get("useValue"+count); console.log("window" + window[scope.data.useValue+count]); console.log("map" + valueMap.get("useValue"+count));*/ scope.data.useValue = valueMap.get("useValue"+count); makeTag += '' + scope.data.useValue+count + ''; // 테이블 설정에서 dName 부분에 사용자 정의 필드 id 를 넣고 해당 값을 추출한다. if (tableConfig.columnHint.id === issueCustomFieldValueVo.customFieldVo.id) { values.push(issueCustomFieldValueVo.useValue); } } angular.forEach(values, function (useValue) { scope.data.useValue = useValue; makeTag += '' + scope.data.useValue + ''; }); break; case "NOTICE_MODIFY": if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_NOTICE')) { makeTag += "" + scope.data.title.replace(/"; } else { makeTag += "" + scope.data.title + ""; } break; case "NOTICE_REGISTER": //makeTag += ' OWL ITS TEAM'; makeTag += ' ' + scope.data.writer+ ''; break; case "GUIDE_MODIFY": if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_GUIDE')) { makeTag += "" + scope.data.title.replace(/"; } else { makeTag += "" + scope.data.title + ""; } break; case "GUIDE_REGISTER": makeTag += ' ' + scope.data.writer + ''; break; case "GUIDE_ACTIVE" : makeTag += ""; break; case "EVENT_DUE_DATE" : makeTag += "" + scope.data.startDate + " ~ " + scope.data.endDate + ""; break; case "EVENT_MODIFY": if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_EVENT')) { makeTag += "" + scope.data.title.replace(/"; } else { makeTag += "" + scope.data.title + ""; } break; case "EVENT_REGISTER": makeTag += ' ' + scope.data.writer + ''; break; case "EVENT_ACTIVE" : makeTag += ""; break; case "FAQ_MODIFY": if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_FAQ')) { makeTag += "" + scope.data.title.replace(/"; } else { makeTag += "" + scope.data.title + ""; } break; case "FAQ_REGISTER": makeTag += ' ' + scope.data.writer + ''; break; case "FAQ_ACTIVE" : if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_FAQ')) { makeTag += ""; } break; case "QNA_MODIFY": if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_QNA') || $rootScope.user.id === scope.data.registerId) { makeTag += "" + scope.data.title.replace(/"; } else { makeTag += "" + scope.data.title + ""; } break; case "QNA_REGISTER": makeTag += ' ' + scope.data.writer + ''; break; } } else if (tableConfig.dType === "date") { makeTag += $filter('date')(scope.data[tableConfig.dName], $tableProvider.getDateFormat(tableConfig.dDateFormat, scope.data[tableConfig.dName])); } else { if (angular.isDefined(scope.data[tableConfig.dName]) && scope.data[tableConfig.dName] != null) { makeTag += '' + scope.data[tableConfig.dName] + ''; } else { makeTag += ''; } } makeTag += ''; var linkFn = $compile(makeTag); var content = linkFn(scope); element.append(content); }); } } } }]); });