Redmine의 무료 버전 Easy Gantt에 자유롭게 공휴일을 표시하는 방법
대체로 호평에 도입되었지만, 도입 후에 제일 요망으로서 올라온 것이 공휴일을 간트 차트 위에 내고 싶다는 것이었다.
숨겨진 Easy Gantt 휴일 기능
실은, Easy Gantt에는 Redmine의 환경 설정으로 설정한 휴일 이외에도, 커스텀의 휴일을 설정하는 기능이 있다. 이 기능은 Easy Redmine사의 커스터마이즈판 Redmine과의 연계를 상정하고 있기 때문에, 통상은 (아마 프로판이었다고 해도) 사용할 수 없다.
또, Easy Gantt의 테이블은 JavaScript를 사용해 canvas 요소로서 생성되고 있기 때문에, Redmine의 View Customize plugin으로 캘린더에 공휴일 표시 - Qiita 와 같이 HTML/CSS 요소 레벨에서의 대응은 불가능했다.
거기서 canvas 요소를 생성하고 있는 JavaScript를 해석한 결과, 모든 데이터와 함수가
window.ysy
라는 글로벌 변수에 저장되어 있는 옛날의 구현인 것을 알았다. 게다가 휴일을 회색으로 칠하기 위한 데이터가 ysy.settings.holidays
라는 이름의 배열내에 Moment.js 로 해석할 수 있는 캐릭터 라인의 형식으로 격납할 수 있는 구현이 되고 있었다.즉, 이 배열에 Easy Gantt의 초기화보다 전에 데이터를 넣어 두면, 마음대로 휴일을 조작할 수 있다는 것이다.
View Customize에서 전역 변수를 만지기
직접 플러그인내의 코드를 변경해도 좋지만, Easy Gantt의 JavaScript 코드는 오픈 소스가 아닌 라이센스로 제공되고 있기 때문에, 엄밀하게는 EULA 위반이 될 가능성이 있다. (루비 코드는 GPL)
그러나 View Customize 플러그인으로 간접적으로 변경한다면 문제 없을 것이다.
View Customize 플러그인은 Redmine의 관리 화면에서 임의의 CSS/JavaScript를 추가할 수 있는 매우 편리한 플러그인이다.
참고 사이트:
View Customize에서 공휴일 데이터 입력
다음과 같은 설정을 View Customize에 추가함으로써 임의로 공휴일을 추가할 수 있다. 아래의 예에서는 2017년 일본 공휴일을 설정하고 있다.
Path Pattern:
/projects/.*/easy_gantt
유형:
JavaScript
코드:
// 休日をガントチャートにプロット
window.ysy = { settings: { holidays: [
// 2017年の日本の祝日
"2017-01-02",
"2017-01-09",
"2017-02-11",
"2017-03-20",
"2017-04-29",
"2017-05-03",
"2017-05-04",
"2017-05-05",
"2017-07-17",
"2017-08-11",
"2017-09-18",
"2017-09-23",
"2017-10-09",
"2017-11-03",
"2017-11-23",
"2017-12-23"
]}};
재미있는 휴일 생활을 보내자!
이렇게 그림처럼 3연휴 등이 간트차트에 반영되게 됐다. 이제 무심코 공휴일에 태스크를 당긴다는 블랙 사고를 피할 수 있게 됐다.
이쪽도 부디!
Reference
이 문제에 관하여(Redmine의 무료 버전 Easy Gantt에 자유롭게 공휴일을 표시하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y_hokkey/items/2b04668c52bc9504174d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)