'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 "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 "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 "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_USER" : makeTag += '
'; break; case "REGISTER" : scope.data.registsrVos = [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 "USER_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 "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); }); } } } }]); });