가자공부하러!

Javascript Full Calendar(3) - DB 값 가져오기 본문

공부/Javascript, Node.js, jQuery, Ajax

Javascript Full Calendar(3) - DB 값 가져오기

오피스엑소더스 2019. 9. 3. 20:45

1. 개발환경


1. 다운로드

  > Javascript Full Calendar 홈페이지 : https://fullcalendar.io

  > Javascript Full Calendar Scheduler : https://fullcalendar.io/docs/premium


2. 실습환경 : Spring Boot 2.1.7, JDK8, JSP, tiles, Full Calendar 4.3.1

 

3. 적용페이지 : src/main/webapp/WEB-INF/views/calendar/calmain.jsp


2. Calendar 외부의 값 가져오기


1. 버튼 클릭 시 이벤트 가져오기

  > 배열 형태

- 예) 2차원 배열

- 보낼 때 : var arr = [ {'title':'evt4', 'start':'2019-09-04', 'end':'2019-09-06'} ];

- 받을 때 : calendar.addEvent( arr[0] );

- 예) 1차원 배열

- 보낼 때 : var arr = { 'title':'evt4', 'start':'2019-09-04', 'end':'2019-09-06' };

- 받을 때 : calendar.addEvent( arr );


3. DB에서 값 가져오기


1. 순서

  > calendar 객체 생성(view - js)

  > ajax통신을 통해 DB CALENDAR 테이블의 데이터를 요청하는 javascript 함수 작성(view - js)

  > ajax통신을 통해 데이터를 Map 타입으로 건네주는 Controller, Service, DAO 작성(java)

  > ajax통신을 통해 받아온 데이터를 calendar 객체에 적용하는 코드 작성

- $.each 함수를 활용해서 calendar에 이벤트 추가


2. 데이터

  > Full Calendar 이벤트 객체가 갖는 필드

- title : 캘린더에 표시되는 일정의 이름

- start : 캘린더에 표시되는 일정의 시작일 (yyyy-mm-dd[THH:MM:SS] ; 2019-09-05T12:30:00)

- end : 캘린더에 표시되는 일정의 마지막 일 (yyyy-mm-dd[THH:MM:SS] ; 2019-09-05T12:30:00)

- 캘린더에는 start부터 end전날까지 표시됨

- allDay : 일정이 종일인지 아닌지 여부(boolean)


3. Controller에서 Map 형태로 보낸 데이터 FullCalendar에 추가하는 방법

  > Map
1
2
3
4
Map<String, FullCalendarDTO> javaMap = new HashMap<String, FullCalendarDTO>();
 
javaMap.put("evt1"new FullCalendarDTO("db이벤트1""2019-09-04""2019-09-06""false") );
javaMap.put("evt2"new FullCalendarDTO("db이벤트2""2019-09-23""2019-09-26""false") );        
cs

  > script (ajax)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function getCalendarDataInDB(){
    var arr = [{title: 'evt1', start:'ssssss'}, {title: 'evt2', start:'123123123'}];
    
    $.ajax({
        contentType:'application/json',
        dataType:'json',
        url:'calendar/getall',
        type:'post',
        async: false,
        success:function(resp){
            arr = resp;
        },
        error:function(){
            alert('저장 중 에러가 발생했습니다. 다시 시도해 주세요.');
        }
    });
    return arr;
}
cs

  > script (Full Calendar 내부 버튼클릭 이벤트)

1
2
3
4
5
6
7
$("#btnAddTest").click(function(){
 var arr = getCalendarDataInDB();
 $.each(arr, function(index, item){
  calendar.addEvent( item );
 });
 calendar.render();
});
cs

 



4. 상세 코드 보기


1. calmain.jsp 전체 코드 보기(접기/펼치기)





Comments