'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 ($rootScope.workProject != null && $rootScope.workProject.id == scope.data.id) { 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 "CUSTOM_FIELD_CONFIG" : // 관리자만 수정할 수 있다. if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_PROJECT')) { makeTag += ''; } break; // 프로젝트 팀원 정보 case "PROJECT_USER": 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.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 "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": 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_DELETE": 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; } break; // 우선 순위 case "COMMON_PRIORITY" : makeTag += ""; break; // 중요도 case "COMMON_SEVERITY" : makeTag += ""; break; // 담당 부서 case "ISSUE_DEPARTMENT" : makeTag += "
    "; makeTag += "
    "; angular.forEach(scope.data.departmentVos, function (departments) { makeTag += "
  • " + departments.departmentName + "
  • "; }); makeTag += "
    "; makeTag += "
"; break; // 담당자 case "ISSUE_USER" : makeTag += '
'; break; // 등록자 case "REGISTER" : scope.data.registerVos = [scope.data.registerVo]; 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 "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 += ""; makeTag +=""; break; case "WORKSPACE_USE_YN" : 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 = []; 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 "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'; 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" : makeTag += ""; break; case "QNA_MODIFY": if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_QNA')) { 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); }); } } } }]); });