이 문서는 Jira Issue in Epic에 Sprint column 추가하기 가이드를 공유하기 위해 작성되었다.
도구명 | Jira |
---|---|
버전 | 8.22 |
초기 설정
설정 확인
- System → Settings → HTML 허용 여부 확인
커스텀필드 값 찾기
- System → Issue → Custom Fields → 해당 필드 선택(Sprint)
- 웹페이지의 값 customFieldId=뒤 숫자 기억
방법1. Announcement Banner 편집
- System → Announcement Banner
- Announcement 부분에 스크립트 넣은 후 'Set Banner' 클릭
- 확인
방법2. custom Field 편집
- 해당되는 에픽 이슈에 사용되는 커스텀 필드 선택
- 설정 → Issues → Custom Fields → 해당 되는 필드 편집 선택
- Description 부분에 해당 스크립트 삽입 후 저장
- 확인
Script 내용
- 20줄 커스텀 ID값 수정
- 스플린트 링크 추가
- 스플린트 별 색상 부여
<script type='text/javascript'> function EpicAddSprint(){ //스플린트별 주기위한 Set 선언 var colorSet = new Set(); //색 리스트 var colorlist = ["green","#87CEEB", "#00FFFF", "#E0FFFF", "#87CEEB", "#2F4F4F", "#20B2AA", "#9ACD32", "#FFE4C4", "#FFFF00"]; var i = 0; AJS.$('#ghx-issues-in-epic-table tr').each(function(){ var row = this; var issueKey = AJS.$(this).attr("data-issuekey"); AJS.$.getJSON(AJS.contextPath() + '/rest/api/latest/issue/' + issueKey, function(data){ //중복 방지 var check = AJS.$(`#add_sprint_${i}`)[0] if(check == null){ // 링크 주소 찾기 var url = AJS.$('#baseURL'); var baseurl = url.context.location.href.toString().split('/projects/', 2)[0]; var project = (url.context.location.href.toString().split('/projects/', 2)[1]).split('/', 1)[0]; // Sprint 이름 찾기 var value = data.fields.customfield_10101 //스플린터 할당 여부 판단 if(value != null){ var result1 = value[0].toString().split(',name=', 2); var sprint = result1[1].split(',startDate', 1); var sprintname = sprint.toString(); var rapidview = value[0].toString().split(',', 2)[1]; //표출되는 위치: 요약 전(td.ghx-summary), 유형 전(td.issuetype), 상태 전(td.status), 담당자 전(td.assignee), 액션 전(td.issue_actions) var actions = AJS.$(row).find('td.assignee'); AJS.$(actions).before(`<td id="add_sprint_${i}" class="nav "><span class="jira-issue-status-lozenge aui-lozenge jira-issue-status-lozenge-color-test jira-issue-status-lozenge-done aui-lozenge-subtle jira-issue-status-lozenge-max-width-medium"> <a href="${baseurl}/secure/RapidBoard.jspa?${rapidview}&projectKey=${project}&view=detail">${sprintname}</a></span></td>`); // 색상 부여 colorSet.add(sprintname); var colorindex = [...colorSet].indexOf(sprintname)%colorSet.size; // 배경 색 AJS.$(`#add_sprint_${i} span`).css("background-color",colorlist[parseInt(colorindex)]); // 패딩 변경 AJS.$(`#add_sprint_${i} span`).css("padding","5px 9px"); // 글자 색 흰색 AJS.$(`#add_sprint_${i} a`).css("color","#fff"); } else { var actions = AJS.$(row).find('td.assignee'); AJS.$(actions).before(`<td id="add_sprint_${i}" class="nav "><span class="jira-issue-status-lozenge aui-lozenge jira-issue-status-lozenge-color-test jira-issue-status-lozenge-done aui-lozenge-subtle jira-issue-status-lozenge-max-width-medium"> 없음 </span></td>`); AJS.$(`#add_sprint_${i} span`).css("background-color","#11ffee00"); } } i += 1; }); }); i = 0; console.log("function end"); }; //Banner에서 사용 시 //setTimeout(EpicAddSprint, 2000); // 커스텀필드에서 사용시 AJS.toInit(EpicAddSprint); </script>