코디잉
11.30_플래너 작성폼 드디어 완성,,,,(ver.1) with mustache,,, ① 일정 작성하기 전 모달 본문
11.30_플래너 작성폼 드디어 완성,,,,(ver.1) with mustache,,, ① 일정 작성하기 전 모달
yong_ღ'ᴗ'ღ 2022. 12. 1. 03:12ver1인건,,,세세하게 더 처리해야 할 부분이 남아있어서...ㅎㅎ!
나중에 다른 부분에서 할 거 다 하고나서 추가로 작업할 예정,,,이다,,
플래너 insertForm 을 완성하기까지 오랜 시간이 걸렸따........ 😂
일단 모달창 부터 차근차근 흐름을 적어보자면,
메인에서 [일정만들기]를 클릭하면,
- 비회원일 경우에는 알림창과 함께 로그인폼으로 이동시키고,
- 회원일 경우에만 제목/지역/기간을 입력할 수 있는 모달창을 띄워준다.
✔ 모달 정보를 입력하고 <일정 만들기>를 누르면 하는 작업,
① 해당 지역으로 zoom이 된 지도를 띄워준다. (위도, 경도, zoom 필요)
지도 javascript 코드에는 default로 지역을 선택하지 않았을 경우의 위도, 경도, zoom 으로 설정해놨음
② 선택한 지역의 관광지 목록을 조회순으로 띄워준다.
selectbox option의 value에는 지역코드를 넣어놨다.
Tour API에서 목록을 가져오기 위해 해당 지역코드를 사용한다.
③ 여행의 시작일과 마지막일을 선택하면 선택한 일수만큼 여행 장소를 선택할 수 있는 공간과 지도가 만들어진다.
✔ 일정 만들기에서 제목, 기간은 반드시 입력해야하는 사항이고, 지역은 선택사항이다.
지역을 선택하면, 해당 위치로 지도를 띄워주고,
지역을 선택하지 않을 시, 대한민국이 그냥 다 보이게 지도 띄워줌
mustache 문법도 볼 겸 코드 올리자면,
{{#areaList}} ~~ {{/areaList}} → areaList가 있으면 있는만큼 아래 코드 반복
{{^areaList}} ~~ {{/areaList}} → areaList가 없으면 ~
<select id="areacode" class="form-select form-select-sm"
aria-label=".form-select-sm example">
<option selected value="">--- 지역 ---</option>
{{#areaList}}
<option value="{{code}}" data-loc_x="{{loc_x}}" data-loc_y="{{loc_y}}" data-zoom="{{zoom}}">{{name}}</option>
{{/areaList}}
</select>
✔ 여행 날짜는 시작일을 선택하면, 여행의 마지막 날짜는 시작일부터 선택할 수 있도록 Datepicker를 설정했다.
여행 마지막 날짜를 먼저 선택하고, 시작 날짜를 해당 날짜보다 더 뒤에 있는 날짜를 선택하면 알아서
마지막 날짜도 시작 날짜로 바뀜
Datepicker 관련 코드
$.datepicker.setDefaults({
dateFormat: 'yy-mm-dd',
prevText: '이전 달',
nextText: '다음 달',
monthNames: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
dayNames: ['일', '월', '화', '수', '목', '금', '토'],
dayNamesShort: ['일', '월', '화', '수', '목', '금', '토'],
dayNamesMin: ['일', '월', '화', '수', '목', '금', '토'],
showMonthAfterYear: true,
yearSuffix: '년'
});
$(function(){
$('.datepicker').datepicker();
});
// 여행 마지막 날짜는 선택한 시작 날짜부터 선택 가능하도록 처리
$('#start_dt').datepicker({
onClose: function(selectedDate) {
$('#end_dt').datepicker("option", "minDate", selectedDate);
}
});
✔ 모달 창에서 지역 선택 안 할 시, 지도의 위,경도와 zoom을 한국 전체가 보이도록 설정
✔ 모달 창에서 지역 선택 했을 시, 지도의 위, 경도와 zoom을 해당 지역에 맞춰서 설정 (ex. 인천 선택)
모달 창에서 지역 선택 안 할 시, 지도의 위,경도와 zoom을 한국 전체가 보이도록 설정
아까 모달창에서 받아온 지역의 위도, 경도, zoom을 TMap API의 js 코드로 전달해줬다.
모달창과 지도의 html 파일이 달라서 javascipt의 localStorage 를 사용해서 값을 전달해줬다.
plan_modal.js 파일 코드
// 위에서 값 설정하고, 여행플래너 작성 페이지에서 사용하기 위해 localStorage에 저장해놓음
let planInfo = {
"title" : title,
"start_dt" : start_dt,
"end_dt" : end_dt,
"area_code" : area_code,
"loc_x" : loc_x,
"loc_y" : loc_y,
"zoom" : zoom
};
localStorage.setItem("planInfo", JSON.stringify(planInfo));
map.js 파일 코드
// localStorage 에 저장해둔 거 꺼내옴
let mapInfo = JSON.parse(localStorage.getItem('planInfo'));
let x = mapInfo.loc_x;
let y = mapInfo.loc_y;
let zoom = mapInfo.zoom;
// TMap API 코드
function initTmap(){
// 지도 띄우기
for (let i = 1; i <= days; i++) {
mapId = 'map_div' + i;
markerArr[i] = new Array();
mapArr[i] = new Tmapv2.Map(mapId, {
center: new Tmapv2.LatLng(x, y), //-- x, y로 위/경도 값 설정
width : "100%",
height : "745px",
zoom : zoom, //-- zoom으로 zoom 값 설정
zoomControl : true,
scrollwheel : true
});
}
}
'PROJECT > TRIPLAN(여행 플래너)' 카테고리의 다른 글
플래너 작성폼 ③ 작성한 일정 INSERT 시켜주기,, (0) | 2022.12.01 |
---|---|
플래너 작성폼(with mustache,,,) ② 여행일수만큼 공간 만들어주기.../경유지최적화 (0) | 2022.12.01 |
11.28_ERD 수정 (0) | 2022.12.01 |
11.27_Javascript localStorage 사용 (0) | 2022.11.27 |
11.26_ Spring boot email (javaMailSender NullPointerExcpetion) (0) | 2022.11.26 |