'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<scope.data.depth; i++) {
|
if (i == scope.data.depth - 1) {
|
myToken += treeStartToken;
|
} else {
|
myToken += " ";
|
}
|
}
|
myToken += " ";
|
}
|
|
makeTag = '<td class="' + tableConfig.dAlign + ' ' + tableConfig.dVisible + '">';
|
|
if (tableConfig.dType === "checkbox") {
|
// 체크 박스일때
|
/*if (scope.data.defaultYn) {
|
makeTag += '<input type="checkbox" ng-checked="data.checked == true ? true : false" disabled ng-click="$root.$tableProvider.rowChecked(tableConfigs, data, fn.getResponseData())">';
|
}
|
else {*/
|
makeTag += '<input type="checkbox" ng-checked="data.checked == true ? true : false" ng-click="$root.$tableProvider.rowChecked(tableConfigs, data, fn.getResponseData())">';
|
//}
|
|
tableConfig.hChecked = false;
|
}
|
else if (tableConfig.dType === "radio") {
|
// 라디오 버튼일때
|
makeTag += '<input type="radio" ng-checked="data.checked == true ? true : false" ng-click="$root.$tableProvider.rowChecked(tableConfigs, data, fn.getResponseData())">';
|
}
|
else if (tableConfig.dType === "renderer") {
|
// 랜더러 일때
|
switch (tableConfig.dRenderer) {
|
// 프로젝트 상태
|
case "PROJECT_STATUS" :
|
switch (scope.data.status) {
|
case "01":
|
makeTag += "<span class='badge badge-success' translate='common.wait'>대기</span>";
|
break;
|
case "02":
|
makeTag += "<span class='badge badge-primary' translate='common.progress'>진행</span>";
|
break;
|
case "03":
|
makeTag += "<span class='badge badge-secondary' translate='common.end'>종료</span>";
|
break;
|
}
|
break;
|
// 프로젝트 관리자 정보
|
case "PROJECT_MANAGER" :
|
makeTag += '<div owl-profile-over class="os-dropdown-trigger os-dropdown-position-left user-with-avatar" table-user-image="data" target="projectManagerVos"></div>';
|
break;
|
|
// 프로젝트 이름(프로젝트 리스트에서 사용)
|
case "PROJECT_NAME" :
|
if (!scope.data.parentYn) {
|
if ($rootScope.workProject != null && $rootScope.workProject.id == scope.data.id) {
|
makeTag += "<span class='titlenameSelect cursor table-word-break-all sub-line' ng-click='event.changeLastProject(data.id)'>" + myToken + scope.data.name.replace(/</gi, '<') + "</span>";
|
} else {
|
makeTag += "<span class='titlename cursor table-word-break-all sub-line' ng-click='event.changeLastProject(data.id)'>" + myToken + scope.data.name.replace(/</gi, '<') + "</span>";
|
}
|
}else {
|
makeTag += "<span class='titlename cursor table-word-break-all sub-line'>" + myToken + scope.data.name.replace(/</gi, '<') + "</span>";
|
}
|
break;
|
|
// 프로젝트 이름(프로젝트 리스트에서 사용)
|
case "PROJECT_BASIC_NAME" :
|
if (scope.data.projectVo != null) {
|
makeTag += "<span class='titlenameSelect'>" + myToken + scope.data.projectVo.name.replace(/</gi, '<') + "</span>";
|
}
|
break;
|
|
// 사용 파트너 이름(이슈 유형 리스트에서 사용)
|
case "USE_PARTNERS" :
|
if (scope.data.usePartnerVos != null) {
|
var usePartners = [];
|
for (var i=0; i<scope.data.usePartnerVos.length; i++) {
|
usePartners.push(scope.data.usePartnerVos[i].byName);
|
}
|
makeTag += "<span>" + usePartners + "</span>";
|
}
|
break;
|
|
// 프로젝트 목록에서 사용자 정의 필드 설정 표시
|
case "CUSTOM_FIELD_CONFIG" :
|
// 관리자만 수정할 수 있다.
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_PROJECT')) {
|
makeTag += '<button class="btn btn-info" ng-if="data.modifyPermissionCheck" ng-click="event.projectCustomFieldConfig(data.id)"><i class="os-icon os-icon-ui-46" uib-tooltip="사용자 정의 필드 설정"></i></button>';
|
}
|
|
break;
|
// 프로젝트 팀원 정보
|
case "PROJECT_USER":
|
makeTag += '<div owl-profile-over class="" table-user-image="data" target="projectUserVos"></div>';
|
break;
|
|
case "PROJECT_DEPARTMENT":
|
makeTag += "<ul class='ul-not-comma'>";
|
makeTag += "<div style='cursor: pointer; color: #000000'>";
|
angular.forEach(scope.data.projectDepartmentVos, function (departments) {
|
makeTag += "<li>" + departments.departmentName + "</li>";
|
});
|
makeTag += "</div>";
|
makeTag += "</ul>";
|
break;
|
|
case "ISSUE_STATUS_TYPE" :
|
switch (scope.data.issueStatusType) {
|
case "READY":
|
makeTag += "<span class='badge badge-success' translate='common.wait'>대기</span>";
|
break;
|
case "OPEN":
|
makeTag += "<span class='badge badge-primary' translate='common.progress'>진행</span>";
|
break;
|
case "CLOSE":
|
makeTag += "<span class='badge badge-secondary' translate='common.end'>종료</span>";
|
break;
|
}
|
break;
|
|
case "COLOR" :
|
makeTag += "<span class='status-pill' ng-style='{ \"background-color\" : data.color }'></span>";
|
break;
|
|
case "USE_WORKFLOW_LIST" :
|
makeTag += "<ul class='ul-not-comma'>";
|
|
angular.forEach(scope.data.workflowVos, function (workflowVo) {
|
makeTag += "<li>" + workflowVo.name + "</li>";
|
});
|
|
makeTag += "</ul>";
|
break;
|
|
case "USE_ISSUE_TYPE_LIST" :
|
makeTag += "<ul class='ul-not-comma'>";
|
|
angular.forEach(scope.data.issueTypeVos, function (issueTypeVo) {
|
makeTag += "<li>" + issueTypeVo.name + "</li>";
|
});
|
|
makeTag += "</ul>";
|
break;
|
|
case "USE_DEPARTMENT_LIST" :
|
makeTag += "<ul class='ul-not-comma'>";
|
if (scope.data.managerYn !== 'Y'){
|
if(scope.data.departmentVos != null && scope.data.departmentVos.length == 0){ //속해있는 부서가 없을 경우
|
makeTag += "<div style='cursor: pointer; color: #0066ff' ng-click='event.modifyUserDepartments(data.id, data.userId)'>부서를 선택해 주세요.</div>";
|
}else{
|
makeTag += "<div style='cursor: pointer; color: #0066ff' ng-click='event.modifyUserDepartments(data.id, data.userId)'>";
|
angular.forEach(scope.data.departmentVos, function (departments) {
|
makeTag += "<li>" + departments.departmentName + "</li>";
|
});
|
makeTag += "</div>";
|
}
|
makeTag += "</ul>";
|
}
|
break;
|
|
case "WORKFLOW_DEPARTMENT_LIST" :
|
makeTag += "<ul class='ul-not-comma'>";
|
|
if(scope.data.issueStatusVos != null && scope.data.issueStatusVos.length > 0){
|
makeTag += "<div>";
|
angular.forEach(scope.data.issueStatusVos, function (issueStatusVo) {
|
let workflowDepartments = new Set(issueStatusVo.workflowDepartmentVos);
|
angular.forEach(workflowDepartments, function (workflowDepartmentVo) {
|
makeTag += "<li>" + workflowDepartmentVo.departmentVo.departmentName + "</li>";
|
});
|
});
|
makeTag += "</div>";
|
}
|
makeTag += "</ul>";
|
break;
|
|
case "CONFIG" :
|
makeTag += '<a ng-click="event.modify(data.id)"><i class="fa fa-pencil fa-lg" uib-tooltip="수정"></i></a>';
|
break;
|
// 이슈 목록에서 기간 표시
|
case "ISSUE_DUE_DATE" :
|
if (!$rootScope.isDefined(scope.data.startDate) && !$rootScope.isDefined(scope.data.completeDate)) {
|
makeTag += "<span translate='common.noDate'>기간 없음</span>";
|
}
|
else {
|
makeTag += '<span class="cursor" ng-click="event.changeDetailView(data.id)">' + scope.data.startDate + ' ~ ' + scope.data.completeDate + '</span>';
|
}
|
break;
|
|
// 하위이슈 카운트
|
case "DOWN_ISSUE_COUNT" :
|
makeTag += '<span ng-click="event.changeDetailView(data.id)" class="ul-not-comma cursor">' + scope.data.downIssueCount + ' / ' + scope.data.downIssueAllCount + '</span>';
|
break;
|
|
// 프로젝트 기간 표시
|
case "PROJECT_DUE_DATE" :
|
makeTag += "<span>" + scope.data.startDate + " ~ " + scope.data.endDate + "</span>";
|
break;
|
|
case "ISSUE_DETAIL_FLOATING" :
|
makeTag += '<div class="tags">';
|
makeTag += '<i class="fa fa-star move-star" ng-show="$root.currentDetailIssueId == data.id"> </i>';
|
makeTag += '<span class="number-tag">' + scope.data.projectKey + ' - ' + scope.data.issueNumber + '</span>';
|
makeTag += ' <span class="tag"> / </span> ';
|
makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.issueStatusColor + "\"," + "\"border-color\"" + " : \"" + scope.data.issueStatusColor + "\", \"color\": \"#FFFFFF\" }'>" + scope.data.issueStatusName + "</span>";
|
makeTag += ' <span class="tag"> / </span> ';
|
makeTag += '<span class="tag">' + scope.data.projectName + '</span>';
|
makeTag += '</div>';
|
makeTag += '<div class="titlename cursor" ng-click="event.changeDetailView(data.id)">' + scope.data.title.replace(/</gi, '<') + '</div>';
|
makeTag += '<div class="extra-infodiv">';
|
makeTag += '<span class="extra-info">';
|
makeTag += '<i class="os-icon os-icon-mail-12"></i>';
|
makeTag += '<span>' + scope.data.issueCommentCount + '</span>';
|
makeTag += '</span>';
|
makeTag += '<span class="extra-info">';
|
makeTag += '<i class="os-icon os-icon-ui-51"></i>';
|
makeTag += '<span>' + scope.data.attachedFileCount + '</span>';
|
makeTag += '</span>';
|
makeTag += '</div>';
|
break;
|
|
/* case "ISSUE_DETAIL_MOVE" :
|
makeTag += "<a class='text-center' ui-sref='issues.detail({ id : " + scope.data.id + " })'><span>" + scope.data.title + "</span></a>";
|
break;*/
|
|
// 연관 이슈 이동(제목)
|
// case "ISSUE_RELATION_MOVE" :
|
// makeTag += "<span class=\"titlename cursor text-center\" ng-click=\"event.changeDetailView(data.issueRelation)\">" + scope.data.title + "</span></a>";
|
// break;
|
|
// 연관이슈 구분
|
// case "ISSUE_RELATION_TYPE":
|
// makeTag += "<span>" + scope.data.relationIssueTypeName + "</span>";
|
// break;
|
|
// 연관이슈 삭제
|
// case "ISSUE_RELATION_DELETE":
|
// if (scope.data.modifyPermissionCheck) {
|
// makeTag += '<img class="cursor" src="/assets/images/delete-icon.png" ng-click="event.removeRelationIssue(data.id)">';
|
// }
|
// break;
|
|
// 연관 이슈 우선순위
|
// case "REL_COMMON_PRIORITY" :
|
// makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.priorityVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.priorityVo.color + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.priorityVo.name + "'></span>";
|
// break;
|
|
// 연관 이슈 중요도
|
// case "REL_COMMON_SEVERITY" :
|
// makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.severityVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.severityVo.color + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.severityVo.name + "'></span>";
|
// break;
|
|
// 연관 이슈 등록자
|
// case "REL_REGISTER":
|
// scope.data.registerVos = [scope.data.issueRelation.registerVo];
|
// makeTag += '<div owl-profile-over class="" table-user-image="data" target="registerVos"></div>';
|
// break;
|
//
|
// break;
|
|
// 연관 이슈 담당부서
|
// case "REL_ISSUE_DEPARTMENT" :
|
// makeTag += "<ul class='ul-not-comma'>";
|
// makeTag += "<div style='color: #000000'>";
|
// angular.forEach(scope.data.issueRelation.departmentVos, function (departments) {
|
// makeTag += "<li>" + departments.departmentName + "</li>";
|
// });
|
// makeTag += "</div>";
|
// makeTag += "</ul>";
|
// break;
|
|
// 연관 이슈 목록에서 기간 표시
|
// case "REL_ISSUE_DUE_DATE" :
|
// if (!$rootScope.isDefined(scope.data.issueRelation.startDate) && !$rootScope.isDefined(scope.data.issueRelation.completeDate)) {
|
// makeTag += "<span translate='common.noDate'>기간 없음</span>";
|
// }
|
// else {
|
// makeTag += "<span>" + scope.data.issueRelation.startDate + " ~ " + scope.data.issueRelation.completeDate + "</span>";
|
// }
|
// 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 += '<span class="table-word-break-all cursor">' + value + '<span><br>';
|
// });
|
//
|
// break;
|
|
// 하위 이슈 이동(제목)
|
// case "ISSUE_DOWN_MOVE" :
|
// makeTag += "<span class=\"titlename cursor\" ng-click=\"event.changeDetailView(data)\">" + scope.data.title + "</span></a>";
|
// break;
|
//
|
// // 하위 이슈 타입
|
// case "ISSUE_DOWN_STATUS_TYPE" :
|
// makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.issueStatusVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.issueStatusVo.color + "\", \"color\": \"#FFFFFF\" }'>" + scope.data.issueStatusVo.name + "</span>";
|
// break;
|
//
|
// 하위 이슈 삭제
|
// case "ISSUE_DOWN_DELETE":
|
// if (scope.data.modifyPermissionCheck) {
|
// makeTag += '<img class="cursor" src="/assets/images/delete-icon.png" ng-click="event.removeDownIssue(data.id)">';
|
// }
|
// break;
|
//
|
// 하위 이슈 우선 순위
|
// case "DOWN_COMMON_PRIORITY" :
|
// makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.priorityVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.priorityVo.color + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.priorityVo.name + "'></span>";
|
// break;
|
//
|
// 하위 이슈 중요도
|
// case "DOWN_COMMON_SEVERITY" :
|
// makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.severityVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.severityVo.color + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.severityVo.name + "'></span>";
|
// break;
|
//
|
// 하위 이슈 담당부서
|
// case "DOWN_ISSUE_DEPARTMENT" :
|
// makeTag += "<ul class='ul-not-comma'>";
|
// makeTag += "<div style='color: #000000'>";
|
// angular.forEach(scope.data.departmentVos, function (departments) {
|
// makeTag += "<li>" + departments.departmentName + "</li>";
|
// });
|
// makeTag += "</div>";
|
// makeTag += "</ul>";
|
// break;
|
//
|
// 하위 이슈 등록자
|
// case "DOWN_REGISTER":
|
// scope.data.registerVos = [scope.data.registerVo];
|
// makeTag += '<div owl-profile-over class="" table-user-image="data" target="registerVos"></div>';
|
// break;
|
//
|
// 하위 이슈 기간
|
// case "DOWN_ISSUE_DUE_DATE" :
|
// if (!$rootScope.isDefined(scope.data.startDate) && !$rootScope.isDefined(scope.data.completeDate)) {
|
// makeTag += "<span translate='common.noDate'>기간 없음</span>";
|
// }
|
// else {
|
// makeTag += "<span>" + scope.data.startDate + " ~ " + scope.data.completeDate + "</span>";
|
// }
|
// 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 += '<span class="table-word-break-all">' + value + '<span><br>';
|
// });
|
//
|
// break;
|
|
// 이름을 클릭하면 수정 팝업 표시
|
case "COMMON_MODIFY" :
|
if (scope.data.modifyPermissionCheck) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modify(data.id)'>" + scope.data.name.replace(/</gi, '<') + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename not-modify table-word-break-all'>" + scope.data.name + "</span>";
|
}
|
break;
|
|
// 설정 버튼 클릭하면 수정 팝업 표시
|
case "BUTTON_MODIFY" :
|
makeTag += '<button class="btn btn-info" ng-if="data.modifyPermissionCheck" ng-click="event.modify(data.id)"><i class="os-icon os-icon-ui-46" uib-tooltip="프로젝트 설정"></i></button>';
|
break;
|
|
// 사용자 정의 필드 옵션 표시
|
case "CUSTOM_FIELD_OPTION" :
|
switch (scope.data.customFieldType) {
|
case "INPUT" :
|
makeTag += "<span translate='common.stringField'>문자열 필드</span>";
|
break;
|
case "MULTI_SELECT" :
|
makeTag += "<span translate='common.multipleSelectionField'>다중 선택 필드</span>";
|
break;
|
case "SINGLE_SELECT" :
|
makeTag += "<span translate='common.singleSelectionField'>단일 선택 필드</span>";
|
break;
|
case "NUMBER" :
|
makeTag += "<span translate='common.numberField'>숫자 필드</span>";
|
break;
|
case "DATETIME" :
|
makeTag += "<span translate='common.datetimeField'>날짜 필드</span>";
|
break;
|
case "IP_ADDRESS" :
|
makeTag += "<span translate='common.ipAddressField'>IP ADDRESS 필드</span>";
|
break;
|
case "EMAIL" :
|
makeTag += "<span translate='common.emailField'>이메일 필드</span>";
|
break;
|
case "SITE" :
|
makeTag += "<span translate='common.siteField'>URL 필드</span>";
|
break;
|
case "TEL" :
|
makeTag += "<span translate='common.telField'>전화번호 필드</span>";
|
break;
|
}
|
|
break;
|
// 이슈 제목
|
case "ISSUE_TITLE" :
|
scope.data.title = scope.data.title.replace(/</gi, '<');
|
makeTag += '<div class="tags text-left">';
|
makeTag += '<i class="fa fa-star move-star" ng-show="$root.currentDetailIssueId == data.id"> </i>';
|
makeTag += '<span class="number-tag">' + scope.data.projectKey + ' - ' + scope.data.issueNumber + '</span>';
|
makeTag += ' <span class="tag"> / </span> ';
|
makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.issueStatusColor + "\"," + "\"border-color\"" + " : \"" + scope.data.issueStatusColor + "\", \"color\": \"#FFFFFF\" }'>" + scope.data.issueStatusName + "</span>";
|
if (scope.data.isApi === 'Y') {
|
makeTag += '<span class="tag"> / </span> ';
|
makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"#EF8D9A" + "\"," + "\"border-color\"" + " : \"#EF8D9A" + "\", \"color\": \"#FFFFFF\" }'>" + "<span>API</span>" + "</span>";
|
}
|
makeTag += '</div>';
|
makeTag += '<div class="titlename cursor text-left" ng-click="event.changeDetailView(data.id)" translate="' + scope.data.title + '">' + '</div>';
|
makeTag += '<div class="extra-infodiv text-left">';
|
makeTag += '<span class="extra-info">';
|
makeTag += '<i class="os-icon os-icon-mail-12"></i>';
|
makeTag += '<span>' + scope.data.issueCommentCount + '</span>';
|
makeTag += '</span>';
|
makeTag += '<span class="extra-info">';
|
makeTag += '<i class="os-icon os-icon-ui-51"></i>';
|
makeTag += '<span>' + scope.data.attachedFileCount + '</span>';
|
makeTag += '</span>';
|
makeTag += '</div>';
|
break;
|
|
// 우선 순위
|
case "COMMON_PRIORITY" :
|
makeTag += "<span ng-click=\"event.changeDetailView(data.id)\" class='badge cursor' ng-style='{ \"background-color\" : \"" + scope.data.priorityColor + "\"," + "\"border-color\"" + " : \"" + scope.data.priorityColor + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.priorityName + "'></span>";
|
break;
|
|
// 중요도
|
case "COMMON_SEVERITY" :
|
makeTag += "<span ng-click=\"event.changeDetailView(data.id)\" class='badge cursor' ng-style='{ \"background-color\" : \"" + scope.data.severityColor + "\"," + "\"border-color\"" + " : \"" + scope.data.severityColor + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.severityName + "'></span>";
|
break;
|
|
// 이슈 유형
|
case "COMMON_ISSUE_TYPE" :
|
makeTag += "<span ng-click=\"event.changeDetailView(data.id)\" class='cursor' translate='" + scope.data.issueTypeName + "'></span>";
|
break;
|
|
// 담당 부서
|
case "ISSUE_DEPARTMENT" :
|
makeTag += "<ul ng-click=\"event.changeDetailView(data.id)\" class='ul-not-comma cursor'>";
|
makeTag += "<div style='color: #000000'>";
|
angular.forEach(scope.data.departmentVos, function (departments) {
|
scope.data.departmentName = departments.departmentName;
|
makeTag += "<li translate='" + scope.data.departmentName + "'>" + "</li>";
|
});
|
makeTag += "</div>";
|
makeTag += "</ul>";
|
break;
|
|
// 담당자
|
case "ISSUE_USER" :
|
makeTag += '<div owl-profile-over class="" table-user-image="data" target="userVos"></div>';
|
break;
|
|
// 등록자
|
/* case "REGISTER" :
|
scope.data.registerVos = [scope.data.registerVo];
|
makeTag += '<div ng-click=\"event.changeDetailView(data.id)\" owl-profile-over class="cursor" table-user-image="data" target="registerVos"></div>';
|
break;*/
|
|
case "REGISTER" :
|
scope.data.registerVos = [scope.data.registerVo];
|
makeTag += "<ul ng-click=\"event.changeDetailView(data.id)\" class='ul-not-comma cursor'>";
|
makeTag += "<div style='color: #000000'>";
|
angular.forEach(scope.data.registerVos, function (registers) {
|
makeTag += "<li class='titlenameRegister cursor'>" + registers.name + "</li>";
|
makeTag += "<li class='titlenameAccount cursor'>" + registers.account + "</li>";
|
});
|
makeTag += "</div>";
|
makeTag += "</ul>";
|
break;
|
|
// 업체
|
case "USE_COMPANY" :
|
if (scope.data.companyName == null) {
|
scope.data.companyName = "";
|
}
|
makeTag += "<span ng-click=\"event.changeDetailView(data.id)\" class='cursor' translate='" + scope.data.companyName + "'></span>";
|
break;
|
|
// ISP
|
case "USE_ISP" :
|
if (scope.data.ispName == null) {
|
scope.data.ispName = "";
|
}
|
makeTag += "<span ng-click=\"event.changeDetailView(data.id)\" class='cursor' translate='" + scope.data.ispName + "'></span>";
|
break;
|
|
// 호스팅
|
case "USE_HOSTING" :
|
if (scope.data.hostingName == null) {
|
scope.data.hostingName = "";
|
}
|
makeTag += "<span ng-click=\"event.changeDetailView(data.id)\" class='cursor' translate='" + scope.data.hostingName + "'></span>";
|
break;
|
|
case "WORKFLOW_NAME":
|
makeTag += "<span>" + scope.data.workflowVo.name + "</span>";
|
break;
|
|
case "USER_STATUS" :
|
switch (scope.data.status) {
|
case "01":
|
makeTag += "<span class='btn btn-xs btn-rounded btn-primary pdt0' translate='users.enable'>활성</span>";
|
break;
|
case "02":
|
makeTag += "<span class='btn btn-xs btn-rounded btn-warning pdt0' translate='users.disable'>비활성</span>";
|
break;
|
case "03":
|
makeTag += "<span class='btn btn-xs btn-rounded btn-danger pdt0' translate='users.withdrawal'>탈퇴</span>";
|
break;
|
}
|
break;
|
|
case "USER_EDIT" :
|
makeTag += "<i class='fa fa-pencil fa-lg text-primary cursor' ng-click='event.userModify(data.id)' uib-tooltip='수정'></i>";
|
break;
|
|
|
case "PROJECT_PROCESS_RATE" :
|
makeTag += "<span>" + scope.data.projectProcessRate + "%</span>";
|
break;
|
|
case "TARGET_REMOVE" :
|
makeTag += "<a ng-click='event.remove(data.id)' ng-show='!event.checkProjectManager(data.id)'><i class='fa fa-trash fa-lg' uib-tooltip='제거'></i></a>";
|
break;
|
|
case "PROJECT_USER_NAME" :
|
makeTag += "<span class='btn btn-xs btn-rounded btn-primary' ng-show='event.checkProjectManager(data.id)' translate='dashboard.admin'>관리자</span> ";
|
makeTag += "<span>" + scope.data.name + "</span>";
|
break;
|
|
case "FILE_SIZE" :
|
makeTag += "<span>{{data.size/1024/1024 | number:2}} MB<span>";
|
break;
|
|
case "FILE_REMOVE" :
|
makeTag += "<a ng-click='event.fileRemove(data.index)'><i class='fa fa-trash fa-lg' uib-tooltip='제거'></i></a>";
|
break;
|
|
case "USER_LEVEL_MODIFY":
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_WORKSPACE')) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modifyLevel(data.id)'>" + scope.data.levelName + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename cursor table-word-break-all'>" + scope.data.levelName + "</span>";
|
}
|
break;
|
|
case "WORKSPACE_SETTING_PERM_YN" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.permWorkSpaceSetting' ng-click='event.modifyLevelPermission(data)'><span class='slider round'></span></label>";
|
break;
|
|
case "PROJECT_SETTING_PERM_YN" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.permProjectSetting' ng-click='event.modifyLevelPermission(data)'><span class='slider round'></span></label>";
|
break;
|
|
case "ISSUE_SETTING_PERM_YN" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.permIssueSetting' ng-click='event.modifyLevelPermission(data)'><span class='slider round'></span></label>";
|
break;
|
|
case "ISSUE_SYSTEM_SETTING_PERM_YN" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.permIssueSystemSetting' ng-click='event.modifyLevelPermission(data)'><span class='slider round'></span></label>";
|
break;
|
|
case "PARTNER_SETTING_PERM_YN" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.permPartnerSetting' ng-click='event.modifyLevelPermission(data)'><span class='slider round'></span></label>";
|
break;
|
|
case "API_PERM_YN" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.permApi' ng-click='event.modifyLevelPermission(data)'><span class='slider round'></span></label>";
|
break;
|
|
case "NOTICE_PERM_YN" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.permNotice' ng-click='event.modifyLevelPermission(data)'><span class='slider round'></span></label>";
|
break;
|
|
case "FAQ_PERM_YN" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.permFAQ' ng-click='event.modifyLevelPermission(data)'><span class='slider round'></span></label>";
|
break;
|
|
case "QNA_PERM_YN" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.permQnA' ng-click='event.modifyLevelPermission(data)'><span class='slider round'></span></label>";
|
break;
|
|
case "EVENT_PERM_YN" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.permEvent' ng-click='event.modifyLevelPermission(data)'><span class='slider round'></span></label>";
|
break;
|
|
case "GUIDE_PERM_YN" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.permGuide' ng-click='event.modifyLevelPermission(data)'><span class='slider round'></span></label>";
|
break;
|
|
case "DEPARTMENT_MODIFY":
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_WORKSPACE')) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.departmentModify(data.id)'>" + scope.data.departmentName + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename cursor table-word-break-all'>" + scope.data.departmentName + "</span>";
|
}
|
break;
|
|
case "DEPARTMENT_EX":
|
makeTag += "<div style='margin-top: 5px;'>" + scope.data.departmentDescription + "</div>";
|
break;
|
|
case "DEPARTMENT_COUNT":
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_WORKSPACE')) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modifyDepartmentCount(data.id)'>" + scope.data.departmentCount + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename cursor table-word-break-all'>" + scope.data.departmentCount + "</span>";
|
}
|
break;
|
|
case "DEPARTMENT_OPTION":
|
makeTag +="<select class='form-control input-sm' ng-model='data.departmentId' ng-change='event.modifyUserWorkspace(data)'><option ng-repeat='department in data.departments' ng-value='department.fieldKey'>{{::department.fieldValue}}</option></select>";
|
/*if (scope.data.departmentId != null){
|
makeTag +="<select class='form-control input-sm' ng-model='data.departmentId' ng-change='event.modifyUserWorkspace(data)'><option ng-repeat='department in data.departments' ng-value='department.fieldKey'>{{::department.fieldValue}}</option></select>";
|
}
|
else{
|
makeTag +="<select class='form-control input-sm' ng-model='data.departmentId' ng-change='event.modifyUserWorkspace(data)'><option>부서를 선택 하세요.</option>"
|
makeTag +="<option ng-repeat='department in data.departments' ng-value='department.fieldKey'>{{::department.fieldValue}}</option></select>";
|
}*/
|
break;
|
|
case "LEVEL_OPTION" :
|
//makeTag += "<select class='form-control input-sm' ng-model='data.levels[0].id' ng-options='levelName.id as levelName.levelName for levelName in data.levels' ></select>";
|
if (scope.data.managerYn === 'Y'){
|
makeTag +="<span>최고관리자</span>";
|
} else {
|
makeTag +="<select class='form-control input-sm' ng-model='data.levelId' ng-change='event.modifyUserWorkspace(data)'><option ng-repeat='level in data.levels' ng-value='level.fieldKey'>{{::level.fieldValue}}</option></select>";
|
}
|
break;
|
|
case "WORKSPACE_USE_YN" :
|
if (scope.data.managerYn !== 'Y'){
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.useYn' ng-click='event.modifyUserWorkspace(data)'><span class='slider round'></span></label>";
|
}
|
break;
|
|
case "COMPANYFIELD_MODIFY" :
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_CUSTOME_FIELD')) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modify(data.id)'>" + scope.data.name.replace(/</gi, '<') + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename not-modify table-word-break-all'>" + scope.data.name + "</span>";
|
}
|
break;
|
|
case "COMPANYFIELD_IP" :
|
if ($rootScope.isDefined(scope.data.ipStart) && $rootScope.isDefined(scope.data.ipEnd)) {
|
let ipStartArr = [];
|
let ipEndArr = [];
|
|
if (scope.data.ipStart.indexOf(",") !== -1) {
|
scope.data.ipStart = scope.data.ipStart.split(",");
|
ipStartArr = angular.copy(scope.data.ipStart);
|
}
|
if (scope.data.ipEnd.indexOf(",") !== -1) {
|
scope.data.ipEnd = scope.data.ipEnd.split(",");
|
ipEndArr = angular.copy(scope.data.ipEnd);
|
}
|
|
if ($rootScope.isDefined(ipStartArr) && ipStartArr.toString() === scope.data.ipStart.toString()
|
&& $rootScope.isDefined(ipEndArr) && ipEndArr.toString() === scope.data.ipEnd.toString()) {
|
scope.data.ipStart = scope.data.ipStart[0];
|
scope.data.ipEnd = scope.data.ipEnd[0];
|
}
|
makeTag += "<span>" + scope.data.ipStart + "<br>~</br>" + scope.data.ipEnd + "</span>";
|
|
}
|
break;
|
|
case "ISPFIELD_MODIFY" :
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_CUSTOME_FIELD')) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modify(data.id)'>" + scope.data.name.replace(/</gi, '<') + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename not-modify table-word-break-all'>" + scope.data.name + "</span>";
|
}
|
break;
|
|
case "HOSTINGFIELD_MODIFY" :
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_CUSTOME_FIELD')) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modify(data.id)'>" + scope.data.name.replace(/</gi, '<') + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename not-modify table-word-break-all'>" + scope.data.name + "</span>";
|
}
|
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 (useValue) {
|
scope.data[tableConfig.dName] = useValue;
|
makeTag += '<span ng-click="event.changeDetailView(data.id)" class="table-word-break-all cursor">' + scope.data[tableConfig.dName] + '<span>';
|
});
|
|
break;
|
|
case "NOTICE_MODIFY":
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_NOTICE')) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modify(data.id)'>" + scope.data.title.replace(/</gi, '<') + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.view(data.title, data.description)'>" + scope.data.title + "</span>";
|
}
|
|
break;
|
|
case "NOTICE_REGISTER":
|
//makeTag += '<img src="/assets/images/logineyes.png" style="width:30px;"> <span class="fc-blue bold">OWL ITS TEAM</span>';
|
makeTag += '<img src="/assets/images/logo-kisa.png" style="width:30px;"> <span class="fc-blue bold">' + scope.data.writer+ '</span>';
|
break;
|
case "GUIDE_MODIFY":
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_GUIDE')) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modify(data.id)'>" + scope.data.title.replace(/</gi, '<') + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.view(data.title, data.description)'>" + scope.data.title + "</span>";
|
}
|
|
break;
|
|
case "GUIDE_REGISTER":
|
makeTag += '<img src="/assets/images/logo-kisa.png" style="width:30px;"> <span class="fc-blue bold">' + scope.data.writer + '</span>';
|
break;
|
|
case "GUIDE_ACTIVE" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.activation' ng-click='event.activation(data)'><span class='slider round'></span></label>";
|
break;
|
case "EVENT_DUE_DATE" :
|
makeTag += "<span>" + scope.data.startDate + " ~ " + scope.data.endDate + "</span>";
|
break;
|
|
case "EVENT_MODIFY":
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_EVENT')) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modify(data.id)'>" + scope.data.title.replace(/</gi, '<') + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.view(data.title, data.description)'>" + scope.data.title + "</span>";
|
}
|
|
break;
|
|
case "EVENT_REGISTER":
|
makeTag += '<img src="/assets/images/logineyes.png" style="width:30px;"> <span class="fc-blue bold">' + scope.data.writer + '</span>';
|
break;
|
|
case "EVENT_ACTIVE" :
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.activation' ng-click='event.activation(data)'><span class='slider round'></span></label>";
|
break;
|
|
|
case "FAQ_MODIFY":
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_FAQ')) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modify(data.id)'>" + scope.data.title.replace(/</gi, '<') + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.view(data.title, data.description)'>" + scope.data.title + "</span>";
|
}
|
|
break;
|
|
case "FAQ_REGISTER":
|
makeTag += '<img src="/assets/images/logo-kisa.png" style="width:30px;"> <span class="fc-blue bold">' + scope.data.writer + '</span>';
|
break;
|
case "FAQ_ACTIVE" :
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_FAQ')) {
|
makeTag += "<label class='switch'><input type='checkbox' ng-model='data.activation' ng-click='event.activation(data)'><span class='slider round'></span></label>";
|
}
|
break;
|
|
case "QNA_MODIFY":
|
if ($rootScope.checkMngPermission('USER_PERMISSION_MNG_QNA') || $rootScope.user.id === scope.data.registerId) {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.modify(data.id)'>" + scope.data.title.replace(/</gi, '<') + "</span>";
|
}
|
else {
|
makeTag += "<span class='titlename cursor table-word-break-all' ng-click='event.view(data.title, data.description)'>" + scope.data.title + "</span>";
|
}
|
break;
|
|
case "QNA_REGISTER":
|
makeTag += '<img src="/assets/images/logo-kisa.png" style="width:30px;"> <span class="fc-blue bold">' + scope.data.writer + '</span>';
|
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 += '<span>' + scope.data[tableConfig.dName] + '</span>';
|
}
|
else {
|
makeTag += '<span></span>';
|
}
|
}
|
|
makeTag += '</td>';
|
|
var linkFn = $compile(makeTag);
|
var content = linkFn(scope);
|
|
element.append(content);
|
|
});
|
}
|
}
|
}
|
}]);
|
});
|