- 이슈 유형에 따라 사이드바 메뉴에 추가되도록 수정
=> 이슈 유형에 사용 프로젝트를 설정하도록 수정
=> 프로젝트 변경시 프로젝트내의 이슈유형 메뉴가 활성화 되도록 수정
=> 이슈 입력/수정시 선택된 이슈유형으로 자동 입력 되도록 수정 필요
| | |
| | | @JoinColumn(name = "workflow_id") |
| | | private Workflow workflow; |
| | | |
| | | @ManyToOne(fetch = FetchType.LAZY) |
| | | @JoinColumn(name = "project_id") |
| | | private Project project; |
| | | |
| | | @OneToMany(mappedBy = "issueType", cascade = { CascadeType.ALL }, orphanRemoval = true) |
| | | private Set<IssueTypeCustomField> issueTypeCustomFields = new HashSet<>(); |
| | | |
| | | |
| | | public IssueType(){} |
| | | |
| | |
| | | public void setIssueTypeCustomFields(Set<IssueTypeCustomField> issueTypeCustomFields) { |
| | | this.issueTypeCustomFields = issueTypeCustomFields; |
| | | } |
| | | |
| | | public Project getProject() { |
| | | return project; |
| | | } |
| | | |
| | | public void setProject(Project project) { |
| | | this.project = project; |
| | | } |
| | | } |
| | |
| | | private WorkflowService workflowService; |
| | | |
| | | @Autowired |
| | | private ProjectService projectService; |
| | | |
| | | @Autowired |
| | | private WorkspaceService workspaceService; |
| | | |
| | | @Autowired |
| | |
| | | issueType.setWorkspace(workspace); |
| | | Workflow workflow = this.workflowService.getWorkflow(issueTypeForm.getWorkflowId()); |
| | | issueType.setWorkflow(workflow); |
| | | Project project = this.projectService.getProject(issueTypeForm.getProjectId()); |
| | | issueType.setProject(project); |
| | | |
| | | return this.issueTypeRepository.saveAndFlush(issueType); |
| | | } |
| | |
| | | this.setUseIssueTypeByWorkflow(issueTypeVos); |
| | | } |
| | | |
| | | this.setUseIssueTypeByProject(issueTypeVos); |
| | | |
| | | resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(), |
| | | totalPage, totalCount)); |
| | | |
| | |
| | | for (IssueTypeVo issueTypeVo : issueTypeVos) { |
| | | IssueType issueType = this.getIssueType(issueTypeVo.getId()); |
| | | issueTypeVo.setWorkflowVo(ConvertUtil.copyProperties(issueType.getWorkflow(), WorkflowVo.class)); |
| | | } |
| | | } |
| | | |
| | | // 이슈 유형에 연결된 프로젝트 정보를 셋팅한다. |
| | | private void setUseIssueTypeByProject(List<IssueTypeVo> issueTypeVos) { |
| | | for (IssueTypeVo issueTypeVo : issueTypeVos) { |
| | | IssueType issueType = this.getIssueType(issueTypeVo.getId()); |
| | | |
| | | Project project = issueType.getProject(); |
| | | if (project != null) { |
| | | issueTypeVo.setProjectVo(ConvertUtil.copyProperties(issueType.getProject(), ProjectVo.class)); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | case "01": // 워크플로우 정보를 가져온다. |
| | | issueTypeVo.setWorkflowVo(ConvertUtil.copyProperties(issueType.getWorkflow(), WorkflowVo.class)); |
| | | break; |
| | | } |
| | | |
| | | Project project = issueType.getProject(); |
| | | if (project != null) { |
| | | issueTypeVo.setProjectVo(ConvertUtil.copyProperties(issueType.getProject(), ProjectVo.class)); |
| | | } |
| | | } |
| | | |
| | |
| | | ConvertUtil.copyProperties(issueTypeForm, issueType, "id", "issueTypeType"); |
| | | issueType.setWorkflow(workflow); |
| | | |
| | | Project project = this.projectService.getProject(issueTypeForm.getProjectId()); |
| | | issueType.setProject(project); |
| | | |
| | | this.issueTypeRepository.saveAndFlush(issueType); |
| | | |
| | | return issueType; |
| | |
| | | package kr.wisestone.owl.vo; |
| | | |
| | | import kr.wisestone.owl.domain.Project; |
| | | |
| | | /** |
| | | * Created by wisestone on 2018-05-29. |
| | | */ |
| | |
| | | private String description; |
| | | private String color; |
| | | private WorkflowVo workflowVo; |
| | | private ProjectVo projectVo; |
| | | private Boolean modifyPermissionCheck = Boolean.TRUE; // 이슈 유형은 모든 사람들이 수정, 삭제할 수 있어서 기본 값이 True |
| | | |
| | | public IssueTypeVo(){} |
| | |
| | | public void setModifyPermissionCheck(Boolean modifyPermissionCheck) { |
| | | this.modifyPermissionCheck = modifyPermissionCheck; |
| | | } |
| | | |
| | | public ProjectVo getProjectVo() { |
| | | return projectVo; |
| | | } |
| | | |
| | | public void setProjectVo(ProjectVo projectVo) { |
| | | this.projectVo = projectVo; |
| | | } |
| | | } |
| | |
| | | private Integer page; |
| | | private Integer pageSize; |
| | | private Long workspaceId; |
| | | private Long projectId; |
| | | private String deep; // 상세 조회에서 가져올 데이터의 종류를 결정한다. |
| | | |
| | | public IssueTypeCondition(){} |
| | |
| | | public void setDeep(String deep) { |
| | | this.deep = deep; |
| | | } |
| | | |
| | | public Long getProjectId() { |
| | | return projectId; |
| | | } |
| | | |
| | | public void setProjectId(Long projectId) { |
| | | this.projectId = projectId; |
| | | } |
| | | } |
| | |
| | | private String description; |
| | | private String color; |
| | | private Long workflowId; |
| | | private Long projectId; |
| | | private List<Long> removeIds = Lists.newArrayList(); |
| | | |
| | | public IssueTypeForm(){} |
| | |
| | | public void addRemoveIds(Long removeId) { |
| | | this.removeIds.add(removeId); |
| | | } |
| | | |
| | | public Long getProjectId() { |
| | | return projectId; |
| | | } |
| | | |
| | | public void setProjectId(Long projectId) { |
| | | this.projectId = projectId; |
| | | } |
| | | } |
| | |
| | | INDEX `issueTypeIdIndex` (`issue_type_id`) USING BTREE |
| | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
| | | |
| | | -- 이슈 타입 프로젝트 |
| | | ALTER TABLE `issue_type` ADD COLUMN `project_id` BIGINT(11) NULL; |
| | | |
| | |
| | | <if test="name != '' and name != null"> |
| | | AND it.name like CONCAT('%',#{name},'%') |
| | | </if> |
| | | <if test="projectId != '' and projectId != null"> |
| | | AND it.project_id like CONCAT('%',#{projectId},'%') |
| | | </if> |
| | | AND ws.id = #{workspaceId} |
| | | <if test="page != null and !page.equals('')"> |
| | | limit #{pageSize} offset #{page}; |
| | |
| | | mail.password= |
| | | |
| | | # email \uC124\uC815 |
| | | email.host=mail.g2works.kr |
| | | email.host=mail.g2works.kra |
| | | email.port=587 |
| | | email.userName=wyu@maprex.co.kr |
| | | email.password=1234 |
| | |
| | | } |
| | | break; |
| | | |
| | | // 프로젝트 이름(프로젝트 리스트에서 사용) |
| | | case "PROJECT_BASIC_NAME" : |
| | | if (scope.data.projectVo != null) { |
| | | makeTag += "<span class='titlenameSelect'>" + myToken + scope.data.projectVo.name.replace(/</gi, '<') + "</span>"; |
| | | } |
| | | break; |
| | | |
| | | // 프로젝트 목록에서 사용자 정의 필드 설정 표시 |
| | | case "CUSTOM_FIELD_CONFIG" : |
| | | // 관리자만 수정할 수 있다. |
| | |
| | | "relationIssueType6" : "다음 이슈를 우선 진행", |
| | | "updateIssueUser" : "이슈 담당자 변경", |
| | | "normalList" : "이슈 목록", |
| | | "timeLine" : "타임 라인" |
| | | "timeLine" : "타임 라인", |
| | | "useProjects" : "사용 프로젝트", |
| | | "companyInfo" : "업체/ISP/호스팅" |
| | | }, |
| | | "project": { |
| | | "createProject": "프로젝트 만들기", |
| | |
| | | function (app, angular) { |
| | | |
| | | app.controller('commonController', ['$scope', '$rootScope', '$log', 'Auth', '$state', 'User', '$resourceProvider', '$uibModal', 'SweetAlert', 'Workspace', '$translate', '$q', |
| | | '$interval', 'IssueSearch', '$filter', 'Notice', 'Project', |
| | | function ($scope, $rootScope, $log, Auth, $state, User, $resourceProvider, $uibModal, SweetAlert, Workspace, $translate, $q, $interval, IssueSearch, $filter, Notice, Project) { |
| | | '$interval', 'IssueSearch', '$filter', 'Notice', 'Project', 'IssueType', |
| | | function ($scope, $rootScope, $log, Auth, $state, User, $resourceProvider, $uibModal, SweetAlert, Workspace, $translate, $q, $interval, IssueSearch, $filter, Notice, Project, IssueType) { |
| | | |
| | | $scope.fn = { |
| | | logout: logout, // 로그아웃 |
| | |
| | | makeIssueSearch: makeIssueSearch, // 이슈 번호를 저장한 후 이슈 목록으로 이동한다. |
| | | disconnectSocket: disconnectSocket, // 웹 소켓 연결 해제 |
| | | sendMessage: sendMessage, |
| | | moveMenu : moveMenu |
| | | moveMenu : moveMenu, |
| | | findIssueList : findIssueList, // 사이드바 이슈 목록 가져오기 |
| | | changeIssueListMenu : changeIssueListMenu |
| | | }; |
| | | |
| | | $scope.vm = { |
| | |
| | | findAllWorkproject(); |
| | | }); |
| | | |
| | | function changeIssueListMenu(issueTypeId) { |
| | | $rootScope.issueTypeMenu = null; |
| | | for (var issueType of $rootScope.workIssueTypes) { |
| | | if (issueType.id === issueTypeId) { |
| | | $rootScope.issueTypeMenu = issueType; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if ($rootScope.issueTypeMenu != null) { |
| | | moveMenu("issues.list"); |
| | | } |
| | | |
| | | $rootScope.$broadcast("changeIssueListMenu", $rootScope.issueTypeMenu); |
| | | } |
| | | |
| | | function moveMenu(stateName) { |
| | | if ($state.current.name == stateName) { |
| | | $state.reload(); |
| | |
| | | |
| | | // 메세지 발송 |
| | | function sendMessage() { |
| | | |
| | | var content = { |
| | | description : $scope.vm.message, |
| | | userIds : [1] |
| | |
| | | if ($rootScope.user.lastProjectId === project.id) { |
| | | $rootScope.workProject = project; |
| | | } |
| | | |
| | | var id = $rootScope.workProject.id === -1 ? null : $rootScope.workProject.id; |
| | | $scope.fn.findIssueList(id); |
| | | } |
| | | $rootScope.projects = datas; |
| | | } |
| | |
| | | }); |
| | | } |
| | | |
| | | |
| | | // 현재 프로젝트 변경시 |
| | | $scope.$on("changeLastProject", function (event, args) { |
| | | findIssueList(args.id); |
| | | }); |
| | | |
| | | // 이슈 유형 목록 가져오기 |
| | | function findIssueList(projectId) { |
| | | // 이슈 타입 목록 검색 조건을 만든다. |
| | | var conditions = { |
| | | projectId : projectId > -1 ? projectId : null, |
| | | deep : "01" // 이슈 유형에 연결된 워크플로우 정보를 찾는다. |
| | | } |
| | | |
| | | IssueType.find($resourceProvider.getContent(conditions, |
| | | $resourceProvider.getPageContent(0, 100))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | $rootScope.workIssueTypes = result.data.data; |
| | | if ($rootScope.workIssueTypes != null) { |
| | | changeIssueListMenu($rootScope.workIssueTypes[0].id); |
| | | } |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("managementType.failedToIssueTypeList"), result.data.message.message); // "이슈 유형 목록 조회 실패" |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | |
| | | // 프로젝트 변경 |
| | | function changeLastProject(projectId) { |
| | | $rootScope.changeLastProject(projectId); |
| | |
| | | |
| | | // 서버에 저장한 이슈 검색 조건을 가져온다. |
| | | function getVmSearchObject() { |
| | | |
| | | IssueSearch.detail($resourceProvider.getContent({}, $resourceProvider.getPageContent(0, 0))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | |
| | | currentPage = selectedPage; |
| | | } |
| | | |
| | | // 메뉴에서 선택된 이슈 유형을 기본으로 추가 |
| | | if ($rootScope.issueTypeMenu != null) { |
| | | // $scope.vm.pageTitle = $rootScope.issueTypeMenu.name; |
| | | $scope.vm.search.issueTypeIds.push({ |
| | | fieldKey : $rootScope.issueTypeMenu.id, |
| | | fieldValue : $rootScope.issueTypeMenu.name |
| | | }); |
| | | } |
| | | |
| | | // 검색 조건을 저장한다. |
| | | //$scope.fn.makeVmSearchObject(); |
| | |
| | | |
| | | $scope.fn = { |
| | | changeTab : changeTab, // 탭 변경 |
| | | start : start |
| | | }; |
| | | |
| | | $scope.vm = { |
| | | pageTitle : "이슈관리", |
| | | tab : "ISSUE_LIST" // 업무 공간 정보가 기본 탭 |
| | | }; |
| | | |
| | |
| | | $rootScope.$broadcast("changeListTab"); |
| | | } |
| | | } |
| | | |
| | | $scope.fn.start(); |
| | | |
| | | $scope.$on("changeIssueListMenu", function (event, args) { |
| | | if (args != null) { |
| | | $scope.vm.pageTitle = args.name; |
| | | } |
| | | }); |
| | | |
| | | function start() { |
| | | if ($rootScope.issueTypeMenu != null) { |
| | | $scope.vm.pageTitle = $rootScope.issueTypeMenu.name; |
| | | } |
| | | } |
| | | } |
| | | ]); |
| | | } |
| | |
| | | |
| | | $scope.fn = { |
| | | getWorkflowListCallBack : getWorkflowListCallBack, // 워크플로우 auto complete callback function |
| | | getProjectListCallBack : getProjectListCallBack, // 프로젝트 auto complete callback function |
| | | cancel : cancel, // 팝업 창 닫기 |
| | | formSubmit : formSubmit, // 폼 전송 |
| | | formCheck : formCheck // 폼 체크 |
| | |
| | | form : { |
| | | name : "", // 이슈 타입 명 |
| | | workflows : [], // 워크플로우 |
| | | projects : [], // 프로젝트 |
| | | description : "", // 설명 |
| | | color : "#febd35" // 색상 |
| | | }, |
| | | projectName : "", |
| | | workflowName : "", |
| | | autoCompletePage : { |
| | | workflow : { |
| | | page : 0, |
| | | totalPage : 0 |
| | | }, |
| | | project : { |
| | | page : 0, |
| | | totalPage : 0 |
| | | } |
| | |
| | | return true; |
| | | } |
| | | |
| | | if ($scope.vm.form.projects.length < 1) { |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | return workflowId; |
| | | })(), |
| | | projectId : (function () { |
| | | var projectId = ""; |
| | | |
| | | if ($scope.vm.form.projects.length > 0) { |
| | | projectId = $scope.vm.form.projects[0].id; |
| | | } |
| | | |
| | | return projectId; |
| | | })(), |
| | | name : $rootScope.preventXss($scope.vm.form.name), |
| | | description : $rootScope.preventXss($scope.vm.form.description), |
| | |
| | | $scope.vm.autoCompletePage.workflow.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | | function getProjectListCallBack(result) { |
| | | $scope.vm.autoCompletePage.project.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | | function cancel() { |
| | | $rootScope.$broadcast("closeLayer"); // 팝업이 열리고 나서 js-multi, js-single 등에서 body 이벤트가 날아가는 현상 수정 |
| | | $uibModalInstance.dismiss('cancel'); |
| | |
| | | .setDType("renderer") |
| | | .setDName("name") |
| | | .setDAlign("text-center") |
| | | .setDRenderer("USE_PROJECT_LIST")); |
| | | .setDRenderer("PROJECT_BASIC_NAME")); |
| | | $scope.vm.tableConfigs.push($tableProvider.config() |
| | | .setHName("common.color") |
| | | .setHWidth("width-140-p bold") |
| | |
| | | |
| | | $scope.fn = { |
| | | getWorkflowListCallBack : getWorkflowListCallBack, // 워크플로우 auto complete callback function |
| | | getProjectListCallBack : getProjectListCallBack, // 프로젝트 auto complete callback function |
| | | cancel : cancel, // 팝업 창 닫기 |
| | | formSubmit : formSubmit, // 폼 전송 |
| | | formCheck : formCheck, // 폼 체크 |
| | |
| | | id : parameter.id, |
| | | name : "", |
| | | workflows : [], // 워크플로우 |
| | | projects : [], // 프로젝트 |
| | | description : "", // 설명 |
| | | color : "" // 색상 |
| | | }, |
| | | workflowName : "", |
| | | projectName : "", |
| | | autoCompletePage : { |
| | | workflow : { |
| | | page : 0, |
| | | totalPage : 0 |
| | | }, |
| | | project : { |
| | | page : 0, |
| | | totalPage : 0 |
| | | } |
| | |
| | | return true; |
| | | } |
| | | |
| | | if ($scope.vm.form.projects.length < 1) { |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | return workflowId; |
| | | })(), |
| | | projectId : (function () { |
| | | var projectId = ""; |
| | | |
| | | if ($scope.vm.form.projects.length > 0) { |
| | | projectId = $scope.vm.form.projects[0].id; |
| | | } |
| | | |
| | | return projectId; |
| | | })(), |
| | | name : $rootScope.preventXss($scope.vm.form.name), |
| | | description : $rootScope.preventXss($scope.vm.form.description), |
| | |
| | | $scope.vm.autoCompletePage.workflow.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | | function getProjectListCallBack(result) { |
| | | $scope.vm.autoCompletePage.project.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | | function cancel() { |
| | | $rootScope.$broadcast("closeLayer"); // 팝업이 열리고 나서 js-multi, js-single 등에서 body 이벤트가 날아가는 현상 수정 |
| | | $uibModalInstance.dismiss('cancel'); |
| | |
| | | $scope.vm.form.description = result.data.data.description; |
| | | $scope.vm.form.workflows.push(result.data.data.workflowVo); |
| | | $scope.vm.workflowName = result.data.data.workflowVo.name; |
| | | if (result.data.data.projectVo != null) { |
| | | $scope.vm.form.projects.push(result.data.data.projectVo); |
| | | $scope.vm.projectName = result.data.data.projectVo.name; |
| | | } |
| | | $scope.vm.form.color = result.data.data.color; |
| | | } |
| | | } |
| | |
| | | $rootScope.projects = []; |
| | | // 현재 사용중인 프로젝트 |
| | | $rootScope.workProject = null; |
| | | // 현재 프로젝트에 사용중인 이슈 목록(유형) |
| | | $rootScope.workIssueTypes = []; |
| | | // 현재 선택중인 이슈 목록 |
| | | $rootScope.issueTypeMenu = null; |
| | | // 이슈 목록->상세화면에서 마지막으로 접근한 이슈 아이디 - 라우트 탈때마다 초기화 |
| | | $rootScope.currentDetailIssueId = null; |
| | | // 문의하기 |
| | |
| | | $rootScope.projects.forEach(function (el) { |
| | | if (el.id == projectId) { |
| | | $rootScope.workProject = el; |
| | | |
| | | $rootScope.$broadcast("changeLastProject", { id : el.id }); |
| | | } |
| | | }); |
| | | $state.go($state.current, {}, {reload: reload}); |
| | |
| | | } |
| | | }; |
| | | |
| | | |
| | | |
| | | // 프로젝트 관리 권한이 있는지 확인한다 |
| | | $rootScope.checkMngPermissionProject = function () { |
| | | if (!$rootScope.isDefined($rootScope.user)) { |
| | |
| | | <span translate="common.dashboard">대시보드</span> |
| | | </a> |
| | | </li> |
| | | <!-- |
| | | <li class=""> |
| | | <a ui-sref="tasks.agileBoard" tabindex="-1"> |
| | | <div class="icon-w"> |
| | |
| | | <li class="sub-header"> |
| | | <span>ISSUE LIST</span> |
| | | </li> |
| | | <!-- UI문서 제작용 임시 코드 시작--> |
| | | <li class=""> |
| | | <a ui-sref="dashboards.dashboard" tabindex="-1"> |
| | | <div class="icon-w"> |
| | | |
| | | <li ng-repeat="issueType in $root.workIssueTypes"> |
| | | <a class="cursor" tabindex="-1" ng-click="fn.changeIssueListMenu(issueType.id)"> |
| | | <div class="icon-w "> |
| | | <div class="os-icon os-icon-layout"></div> |
| | | </div> |
| | | <span>악성 도메인</span> |
| | | <span>{{issueType.name}}</span> |
| | | </a> |
| | | </li> |
| | | <li class=""> |
| | | <a ui-sref="dashboards.dashboard" tabindex="-1"> |
| | | <div class="icon-w"> |
| | | <div class="os-icon os-icon-layout"></div> |
| | | </div> |
| | | <span>경유지 대응</span> |
| | | </a> |
| | | </li> |
| | | <li class=""> |
| | | <a ui-sref="dashboards.dashboard" tabindex="-1"> |
| | | <div class="icon-w"> |
| | | <div class="os-icon os-icon-layout"></div> |
| | | </div> |
| | | <span>유포지 대응</span> |
| | | </a> |
| | | </li> |
| | | <li class=""> |
| | | <a ui-sref="dashboards.dashboard" tabindex="-1"> |
| | | <div class="icon-w"> |
| | | <div class="os-icon os-icon-layout"></div> |
| | | </div> |
| | | <span>분석결과 대응</span> |
| | | </a> |
| | | </li> |
| | | <!-- UI문서 제작용 임시 코드 끝--> |
| | | |
| | | <!-- |
| | | <li class=""> |
| | | <a ui-sref="tasks.agileBoard" tabindex="-1"> |
| | |
| | | <h6 class="element-header" translate="issue.managementIssue"> |
| | | 이슈 관리 |
| | | <h6 class="element-header"> |
| | | {{vm.pageTitle}} |
| | | </h6> |
| | | |
| | | <div class="os-tabs-w"> |
| | |
| | | <li class="nav-item"> |
| | | <a class="nav-link cursor" ng-class="{ 'active' : vm.tab == 'ISSUE_LIST' }" ng-click="fn.changeTab('ISSUE_LIST')" translate="issue.normalList">일감 목록</a> |
| | | </li> |
| | | <!-- |
| | | <li class="nav-item"> |
| | | <a class="nav-link cursor" ng-class="{ 'active' : vm.tab == 'ISSUE_TIMELINE' }" ng-click="fn.changeTab('ISSUE_TIMELINE')" translate="issue.timeLine">타임 라인</a> |
| | | </li> |
| | | --> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | |
| | | <div ng-show="vm.tab == 'ISSUE_LIST'"> |
| | | <div ng-include include-replace src="'views/issue/issueListNormal.html'"></div> |
| | | </div> |
| | | |
| | | <!-- |
| | | <div ng-show="vm.tab == 'ISSUE_TIMELINE'"> |
| | | <div ng-include include-replace src="'views/issue/issueListTimeline.html'"></div> |
| | | </div> |
| | | --> |
| | | </div> |
| | | |
| | | |
| | |
| | | </div> |
| | | |
| | | <div class="form-group"> |
| | | <label><span translate="issue.useProjects">사용 프로젝트</span></label> |
| | | <js-autocomplete-single data-input-name="workflow" |
| | | selected-model="vm.form.workflows" |
| | | search="vm.workflowName" |
| | | source="fn.getWorkflowList(vm.workflowName, vm.form.workflows, vm.autoCompletePage.workflow.page, fn.getWorkflowListCallBack)" |
| | | page="vm.autoCompletePage.workflow.page" |
| | | total-page="vm.autoCompletePage.workflow.totalPage" |
| | | <label class="issue-label"> <span translate="issue.useProjects">사용 프로젝트</span> <code |
| | | class="highlighter-rouge">*</code></label> |
| | | <js-autocomplete-single data-input-name="project" |
| | | selected-model="vm.form.projects" |
| | | search="vm.projectName" |
| | | source="fn.getProjectList(vm.projectName, vm.form.projects, vm.autoCompletePage.project.page, fn.getProjectListCallBack)" |
| | | page="vm.autoCompletePage.project.page" |
| | | total-page="vm.autoCompletePage.project.totalPage" |
| | | input-disabled="false" |
| | | extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', type : '', maxlength : 200, autoResize : false }"></js-autocomplete-single> |
| | | required |
| | | translation-texts="{ empty : 'common.emptyProject' }" |
| | | extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', |
| | | type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single> |
| | | </div> |
| | | |
| | | |
| | | <div class="form-group"> |
| | | <label><span |
| | | translate="issue.companyInfo">업체/ISP/호스팅 정보</span></label> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <div class="form-group"> |
| | | <label class="issue-label"> <span translate="issue.useProjects">사용 프로젝트</span> <code |
| | | class="highlighter-rouge">*</code></label> |
| | | <js-autocomplete-single data-input-name="project" |
| | | selected-model="vm.form.projects" |
| | | search="vm.projectName" |
| | | source="fn.getProjectList(vm.projectName, vm.form.projects, vm.autoCompletePage.project.page, fn.getProjectListCallBack)" |
| | | page="vm.autoCompletePage.project.page" |
| | | total-page="vm.autoCompletePage.project.totalPage" |
| | | input-disabled="false" |
| | | required |
| | | translation-texts="{ empty : 'common.emptyProject' }" |
| | | extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', |
| | | type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single> |
| | | </div> |
| | | |
| | | |
| | | <div class="form-group"> |
| | | <label><span |
| | | translate="issue.companyInfo">업체/ISP/호스팅 정보</span></label> |
| | | <ng-dropdown-multiselect class="multiSelect cursor" |
| | | data-input-name="issueStatusTypes" |
| | | selected-model="vm.search.issueStatusTypes" |
| | | extra-settings="{ stringTypeOption : true }" |
| | | options="vm.options.emailTemplates"></ng-dropdown-multiselect> |
| | | </div> |
| | | |
| | | |
| | | <div class="form-group"> |
| | | <label for="issueTypeModifyForm2"><span translate="common.color">색상</span> <code class="highlighter-rouge">*</code></label> |
| | | <div class="input-group"> |