/**
|
* Created by wisestone on 2018-09-05.
|
*/
|
'use strict';
|
|
define(['app', 'angular'],
|
function (app, angular) {
|
app.directive('issueSearchCustomFieldViewElement', ["$log", "$compile", "$rootScope",
|
function ($log, $compile, $rootScope) {
|
return {
|
restrict : 'AE',
|
scope : {
|
customFields : "=",
|
},
|
link : function ($scope, $element, $attrs) {
|
|
$scope.fn = {
|
makeSearchElements : makeSearchElements, // 선택한 검색 대상 값을 화면에 표시한다.
|
remove : remove, // 문자열, 단일 선택 필드 삭제
|
removeMultiSelect : removeMultiSelect
|
};
|
|
$scope.$watch("customFields", function () {
|
$element.empty();
|
$scope.fn.makeSearchElements();
|
}, true);
|
|
// 다중 선택 필드 삭제
|
function removeMultiSelect(customFieldId, value) {
|
for (var count in $scope.customFields) {
|
var customField = $scope.customFields[count];
|
|
if (customField.id == customFieldId) {
|
var tempUseValues = [];
|
|
for (var innerCount in customField.useValues) {
|
if (!(customField.useValues[innerCount].value == value)) {
|
tempUseValues.push(customField.useValues[innerCount]);
|
}
|
}
|
|
customField.useValues = angular.copy(tempUseValues);
|
|
break;
|
}
|
}
|
}
|
|
// 문자열, 단일 선택 필드 삭제
|
function remove(customFieldId) {
|
for (var count in $scope.customFields) {
|
var customField = $scope.customFields[count];
|
|
if (customField.id == customFieldId) {
|
customField.useValues = "";
|
break;
|
}
|
}
|
}
|
|
function makeSearchElements() {
|
var makeTag = "";
|
|
angular.forEach($scope.customFields, function (customField) {
|
if ($rootScope.isDefined(customField.useValues)) {
|
switch (customField.customFieldType) {
|
case "INPUT" :
|
makeTag += "<p>";
|
makeTag += customField.useValues;
|
makeTag += "<span ng-click='fn.remove(" + customField.id + ")'>×</span>";
|
makeTag += "</p>";
|
break;
|
|
case "SINGLE_SELECT" :
|
case "MULTI_SELECT" :
|
angular.forEach(customField.useValues, function (useValue) {
|
makeTag += "<p>";
|
makeTag += useValue.value;
|
makeTag += "<span ng-click='fn.removeMultiSelect(" + customField.id + ",\"" + useValue.value + "\")'>×</span>";
|
makeTag += "</p>";
|
});
|
|
break;
|
}
|
}
|
});
|
|
var linkFn = $compile(makeTag);
|
var content = linkFn($scope);
|
$element.append(content);
|
}
|
|
}
|
};
|
}])
|
});
|