Как отобразить дату и название дня недели в fullcallendar? - PullRequest
2 голосов
/ 18 марта 2020

Я использую полный API календаря api для отображения календаря на моем веб-сайте, вдохновленного календарем promo.com, который выглядит следующим образом.

enter image description here

Вот мое решение с использованием компонента js реаги *

import React, { useState, useEffect, useContext, useRef } from 'react';
import { Calendar as FullCalendar } from '@fullcalendar/core';
import googleCalendarPlugin from '@fullcalendar/google-calendar';
import dayGridPlugin from '@fullcalendar/daygrid';
import timeGridPlugin from '@fullcalendar/timegrid';
import interactionPlugin from '@fullcalendar/interaction';
import calendartopbg from 'assets/images/calendar_bg.png';
import cloud from 'assets/images/calendar_chmurka.png';
import styled from 'styled-components';

const Calendar = () => {
    const [calendar, setCalendar] = useState('');
    const calendarRef = useRef('');

    useEffect(() => {
        if (calendarRef.current) {
             console.log(FullCalendar);
            setCalendar(new FullCalendar(calendarRef.current, {
                plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin, googleCalendarPlugin],
                theme: false,
                header: {
                    left: 'prev,next today',
                    center: 'title',
                    right: 'dayGridMonth,listYear',

                  },  
                  views: {
                    day: {
                      titleFormat: 'dddd, MMMM Do YYYY'
                    }
                  },

                  googleCalendarApiKey: 'AIzaSyDcnW6WejpTOCffshGDDb4neIrXVUA1EAE',
                  events: 'en.usa#holiday@group.v.calendar.google.com',
                  eventClick: function(arg) {

                    // opens events in a popup window
                    window.open(arg.event.url, '_blank', 'width=700,height=600');

                    // prevents current tab from navigating
                    arg.jsEvent.preventDefault();
                  }
            }));        
        }
    }, [calendarRef.current]);

    console.log(calendar);

    return (
        <>
           <CalendarBackgroundWrapper>
                <img style={imagestyle} src={calendartopbg} />
         </CalendarBackgroundWrapper>

            <CalendarContainer ref={calendarRef}>
                {calendar && calendar.render ? calendar.render(): null}
            </CalendarContainer>

        </>
    )
}

export default Calendar;

Из приведенного выше решения у меня есть следующее

enter image description here

Теперь я хотел бы показать дату, подобную той, что была в промо, которую я предоставил выше, означая

вместо 01 и 02 et c, она должна быть sun o1, mon 02, tue 03 et c

Как этого добиться с помощью полноценного календаря API .?

1 Ответ

1 голос
/ 19 марта 2020

@ user9964622, так как отправная точка ниже кода может быть использована, он должен быть дополнительно оптимизирован с помощью CSS и вашего кода:

Напишите функцию для получения имени дня:

function getDayName(date) {
    var days = new Array(7);
    days[0] = "SUN";
    days[1] = "MON";
    days[2] = "TUE";
    days[3] = "WED";
    days[4] = "THU";
    days[5] = "FRI";
    days[6] = "SAT";
    var r = days[date.getDay()];
    return (r);
}

Включите следующий код в FullCalendar:

columnHeader: false,    
dayRender: function( dayRenderInfo ) {
    var dayName = getDayName(dayRenderInfo.date);
    var dayNumber = dayRenderInfo.date.getDate();
    dayRenderInfo.el.innerHTML = dayName + "<br/>" + dayNumber;
}

Вы должны применить css, чтобы скрыть текущую дату:

.fc-day-number {display: none;}

Далее вы можете применять стили и включать больше html в dayRender.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...