'use strict';
|
|
define(['app', 'angular'],
|
function (app, angular) {
|
|
app.directive('relColumnGenerator', ['$compile', '$log', '$rootScope', '$relProvider', '$filter',
|
function ($compile, $log, $rootScope, $relProvider, $filter) {
|
return {
|
restrict : "A",
|
compile : function (tElement, tAttrs) {
|
return function (scope, element, attrs) {
|
scope.data = scope[attrs["relColumnGenerator"]];
|
|
var myData = scope.data;
|
var makeTag = "";
|
|
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.$relProvider.rowChecked(tableConfigs, data, fn.getResponseData())">';
|
}
|
else {*/
|
makeTag += '<input type="checkbox" ng-checked="data.checked == true ? true : false" ng-click="$root.$relProvider.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.$relProvider.rowChecked(tableConfigs, data, fn.getResponseData())">';
|
}
|
else if (tableConfig.dType === "renderer") {
|
// 랜더러 일때
|
switch (tableConfig.dRenderer) {
|
|
// 연관 이슈 이동(제목)
|
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;
|
}
|
}
|
|
makeTag += '</td>';
|
|
var linkFn = $compile(makeTag);
|
var content = linkFn(scope);
|
|
element.append(content);
|
});
|
}
|
}
|
}
|
}]);
|
});
|