프로그래밍
fullcalendar 에서 통계 만들기 . events 발생후
krfreedevlife
2024. 5. 9. 12:29
반응형
html로 이루어진 달력 테이블이 있고.
이때 각 테이블의 td에는 클래스는 날짜로 되어있으며 사람 이름이 들어가있을때
날짜별로 해당 테이블에 있는 사람의 이름을 구하는 javascript
// 모든 'td' 요소를 가져옵니다.
var tds = document.getElementsByTagName('td');
// 결과를 저장할 객체를 생성합니다.
var datePersonMap = {};
// 각 'td' 요소에 대해 반복합니다.
for (var i = 0; i < tds.length; i++) {
// 'td' 요소의 클래스 이름을 가져옵니다.
var date = tds[i].className;
// 'td' 요소의 텍스트 내용(사람의 이름)을 가져옵니다.
var person = tds[i].textContent || tds[i].innerText;
// 결과 객체에 날짜와 사람의 이름을 추가합니다.
datePersonMap[date] = person;
}
// 결과를 콘솔에 출력합니다.
console.log(datePersonMap);
여기서 좀더 복잡해졌지만
function calculate_events(){
// 결과를 저장할 객체를 생성합니다.
var textCountMap = {};
var holidayCountMap = {};
// 'td' 요소를 모두 선택합니다.
var tds = document.querySelectorAll('td');
// 각 'td' 요소에 대해 반복합니다.
tds.forEach(function(td) {
// 'td' 요소의 'data-date' 속성을 가져옵니다.
var date = td.getAttribute('data-date');
if (!date) return;
var bgColor = window.getComputedStyle(td).backgroundColor;
if(bgColor !="rgba(0, 0, 0, 0)") console.log(bgColor);
// 'td' 요소 내부의 'fc-event-title' 클래스를 가진 div의 텍스트를 가져옵니다.
var divs = td.getElementsByClassName('fc-event-title fc-sticky');
console.log(divs.length);
for (var i = 0; i < divs.length; i++) {
var text = divs[i].textContent;// || divs[i].innerText;
var str2 = "" + i;
console.log(date + str2 + text);
console.log(i);
// 결과 객체에 텍스트를 추가하고, 등장 횟수를 계산합니다.
if (textCountMap[text]) {
textCountMap[text]++;
} else {
textCountMap[text] = 1;
}
if(bgColor !="rgba(0, 0, 0, 0)") {
console.log(bgColor);
if (holidayCountMap[text]) {
holidayCountMap[text]++;
} else {
holidayCountMap[text] = 1;
}
}
};
});
console.log(textCountMap);
console.log(holidayCountMap);
를 만들어서 drag할때 넣어줘서 처리
반응형