2017-03-13 4 views
0

Ich versuche, einen "Shift" -Kalender für jemanden zu erstellen und ich weiß, an welchem ​​Tag das Muster beginnt und ich kenne das Muster für Tage an und aus. Aber ich habe Probleme, es in Code zu übersetzen.Wie kann ich ein Ereignis basierend auf einem Muster für den Kalender erstellen?

Sie arbeiten 4 Tage, von der Arbeit 3 ​​Tage, Arbeit 4, von der Arbeit 3 ​​Tage, Arbeit für 4, von 2 Tagen, wiederholen. Ich muss einige Logik erstellen, um ein Ereignis für einen Kalender basierend darauf zu erstellen.

Das ist, was ich habe:

$(document).ready(function() { 

    var on = [4, 4, 4]; 
    var off = [3, 3, 2]; 
    var startPattern = "2017-03-04"; 

    var days = $('#calendar').fullCalendar('getDate').daysInMonth(); 
    var events = []; 

    for (var i = $('#calendar').fullCalendar('getDate').day(); i < days; i++) { 
    var event = { 
     title: "work", 
     start: '' 
    } 
    events.push(event); 
    } 


    $('#calendar').fullCalendar({ 
    // put your options and callbacks here 
    events: events 

    }); 
}); 
+0

Sie mit Beispiel erklären könnte, was Sie 4 off von der Arbeit 4, ab 3, Arbeit 4 aus 3, Arbeit bedeuten 2. nicht klar, welche Art von Schichtmuster es ist – MGA

+1

Ich meine, sagen Sie beginnen am 4. März, arbeiten 4 Tage, dann haben 3 Tage frei, dann 4 Tage arbeiten, dann 3 Tage frei, dann 4 Tage arbeiten und dann haben 2 Tage frei. Dann starte von Anfang an so etwas wie: 4-3-4-3-4-2 – Nathan

Antwort

0

Plunker: https://plnkr.co/edit/xIfaWB?p=preview

$(document).ready(function() { 

    // define the schedule; 
    // duration is days; 
    // title is what is shown on the calendar 
    // color is how to color event 
    var schedule = [{ 
    duration: 4, 
    title: 'work', 
    color: 'red' 
    }, { 
    duration: 3, 
    title: 'off', 
    color: 'blue' 
    }, { 
    duration: 4, 
    title: 'work', 
    color: 'red' 
    }, { 
    duration: 3, 
    title: 'off', 
    color: 'blue' 
    }, { 
    duration: 4, 
    title: 'work', 
    color: 'red' 
    }, { 
    duration: 2, 
    title: 'off', 
    color: 'blue' 
    }, ]; 

    // define the range of events to generate 
    var startDay = moment("2017-03-04"); 
    var endDay = moment("2017-05-04"); 


// generate the events 
    var events = []; 
    // we loop from the start until we have passed the end day 
    // the way the code is defined, it will always complete a schedule segment 
    for (var s = 0, day = startDay; day.isBefore(endDay);) { 
    // loop for each day of a schedule segment 
    for (var i = 0; i < schedule[s].duration; i++) { 
     // add the event with the current properties 
     events.push({ 
     title: schedule[s].title, 
     color: schedule[s].color, 
     // we have to clone because the add() call below mutates the date 
     start: day.clone(), 
     allday: true 
     }); 
     // go to the next day 
     day = day.add(1, 'day'); 
    } 

    // go to the next schedule segment 
    s = (s + 1) % schedule.length; 
    } 



    // render the calendar 
    $('#calendar').fullCalendar({ 
    events: events 
    }); 

}); 
+0

Hmm das scheint wie es funktionieren würde. Danke für die detaillierte Lösung! Ich kämpfte darum, meinen Kopf darum zu wickeln. – Nathan

Verwandte Themen