2011-06-21 16 views
14

Szukałem sposobu wyświetlenia tylko bieżącego tygodnia i następnego tygodnia w widoku miesiąca dla FullCalendar. Jak na razie wygląda na to, że został zaproponowany jako funkcja dla nadchodzącej wersji, ale czy w międzyczasie ktoś mógł ją zhakować?Wyświetl 2 tygodnie w jQuery FullCalendar

UPDATE

Dzięki za sugestię Doomsday, udało mi się utworzyć widok niestandardowy, który pokazuje 2 tygodnie, począwszy od bieżącego tygodnia. Zmieniasz widoczną datę rozpoczęcia do dnia dzisiejszego i zmieniając liczbę wierszy do 2.

function TwoWeeksView(element, calendar) { 
var t = this; 

// exports 
t.render = render; 


// imports 
BasicView.call(t, element, calendar, 'month'); 
var opt = t.opt; 
var renderBasic = t.renderBasic; 
var formatDate = calendar.formatDate; 



function render(date, delta) { 
    if (delta) { 
     addMonths(date, delta); 
     date.setDate(1); 
    } 
    var start = cloneDate(date, true); 
    start.setDate(1); 
    var end = addMonths(cloneDate(start), 1); 

    //var visStart = cloneDate(start); 
    var visStart = date; 

    var visEnd = cloneDate(end); 
    var firstDay = opt('firstDay'); 
    var nwe = opt('weekends') ? 0 : 1; 
    if (nwe) { 
     skipWeekend(visStart); 
     skipWeekend(visEnd, -1, true); 
    } 

    addDays(visStart, -((visStart.getDay() - Math.max(firstDay, nwe) + 7) % 7)); 
    addDays(visEnd, (7 - visEnd.getDay() + Math.max(firstDay, nwe)) % 7); 
    var rowCnt = Math.round((visEnd - visStart)/(DAY_MS * 7)); 

    if (opt('weekMode') == 'fixed') { 
     addDays(visEnd, (6 - rowCnt) * 7); 
     //rowCnt = 6; 
     rowCnt = 2; 
    } 
    t.title = formatDate(start, opt('titleFormat')); 
    t.start = start; 
    t.end = end; 
    t.visStart = visStart; 
    t.visEnd = visEnd; 
    renderBasic(6, rowCnt, nwe ? 5 : 7, true); 
} 
} 
+0

Czy masz szansę na stworzenie [jsFiddle] (http://www.jsfiddle.net) tego rozwiązania? To jest dokładnie to, co próbuję teraz zrobić, ale nie mogę go uruchomić. – Michael

+1

@Michael Mam to działa dla mnie. Potrzebowałem również tego dokładnego rozwiązania. Prawdopodobnie jest to trochę za późno, ale największą rzeczą, jaką zauważyłem tutaj, jest to, że obiekt fcViews nie został zaktualizowany o widok podwójny, aby był dostępny do użytku. Musisz dodać: 'fcViews.twoweek = TweoweekView; Funkcja TwoweekView (element, kalendarz) {' – Eric

Odpowiedz

8

Najlepszym rozwiązaniem jest to, aby realizować swój własny pogląd.

umieszczone w nowych JS własny zdefiniowany widok:

$.fullCalendar.views.twoweeks = TwoWeeksView; 
function TwoWeeksView(element, calendar) { 
    // copy code from fullcalendar.js line 1960 
} 
+0

Masz absolutną rację, ale dobrze jest zauważyć, że musisz dodać dodatkowy kod, jeśli chcesz, aby strzałki przeskoczyły do ​​następnych dwóch tygodni do pracy (lub jakiejkolwiek innej funkcjonalności poza wskazującym zaledwie dwoma tygodniami kalendarz.) To jest podejście, które należy zastosować, aby utworzyć dodatkowe widoki dla JqueryFullCalendar. Nie marnuj czasu, używając JQuery do manipulowania stworzonym kalendarzem, ponieważ jest to kompletny shitshow. – Eric

+0

to już nie działa w v2.2.5 + –

+0

zobacz dokumentację w nowszych wersjach, aby łatwo zrobić w opcjach –

1

Odpowiedź będzie wyświetlać dwa kalendarze, jeden z bieżącego tygodnia, a drugi ze po tygodniu.

Proponuję, aby włamać się co zrobiłem na tym skrzypce: http://jsfiddle.net/Doomsday/M3YP3/1/

+0

Niezupełnie to, do czego dążyłem. Potrzebuję widoku miesięcznego, który pokazuje tylko 2 tygodnie, podobnie jak w przypadku Basecamp na pulpicie nawigacyjnym. http://i.imgur.com/tJRWi.png – roflwaffle

+0

Niestety nie czytałem "w widoku miesiąca". Zobacz moją drugą odpowiedź, jeśli to pomoże. – Doomsday

0

najnowsza wersja teraz sprawia, że ​​nawet łatwiejsze (v2.2.6)

można również zamówić ten git tam, gdzie istnieje niestandardowy widok dwukierunkowy, który przesuwa się o 1 tydzień (lub o Ption to ustawione na) w czasie za pomocą przycisków next/prev.

https://github.com/marc-gist/fullcalendar

edit: istota zdaje się nie działać z inną wersją fullcalendar; ale spójrz na dokumenty, aby łatwo skonfigurować widok tygodnia, korzystając z wartości opcji.

+0

gdzie jest ten niestandardowy widok Twoweek, o którym wspomniałeś? –

+0

przeczytać dokumenty: http://fullcalendar.io/docs/views/Custom_Views/ –

5

Właściwą odpowiedzią na fullCalendar 2 jest zmiana na stanowisku basicWeek jak wyjaśniono w dokumentacji:

$('#calendar').fullCalendar({ 
     views: { 
      basicWeek: { 
       type: 'basic', 
       duration: {weeks: 2}, 
       rows: 2 
      } 
     } 
    } 

Nie. Prosty :)

+0

Szukałem dni na to rozwiązanie. TO jest ten, którego należy użyć. –

Powiązane problemy