2017-09-03 14 views
8

मैं पूर्ण कैलेंडर का उपयोग कर रहा हूं, कैलेंडर घटनाओं को लाने के लिए Google कैलेंडर API का उपयोग कर रहा है।पूरा कैलेंडर सभी दिन घटनाक्रम दिखा रहा है

agendaWeek और agendaDay में देखे जाने पर मुझे अपने समय स्लॉट के लिए ऑल डे के रूप में प्रदर्शित होने वाली घटनाओं के साथ कोई समस्या हो रही है। यह उपयोगकर्ता को उनकी घटनाओं को सही तरीके से प्रदर्शित करने से रोकता है और उन्हें यह पता लगाना मुश्किल होता है कि उनकी उपलब्धता दिन या सप्ताह के भीतर कहां है।

मैंने पुष्टि की है कि घटनाओं के उदाहरण 8am से 10am के लिए उदाहरण हैं।

विचारों पर कोई भी? इसे एक को हल करने में मुश्किल हो रही है।

$('#calendar').fullCalendar({ 
    theme: true, 
    header: { 
     left: 'prev,next today', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    }, 
    buttonIcons: { 
     prev: 'circle-triangle-w', 
     next: 'circle-triangle-e' 
    }, 
    <?php if($jsonEvents !='') { ?> 
    dayClick: function(date, allDay, jsEvent, view) { 
     allday:false; 
     var selectDate = ""; 
     var selectTime = ""; 
     if(view.name !="month") { 
     if(allDay) { 
      selectDate = $.fullCalendar.formatDate(date, 'yyyy-MM-dd'); 
     } 
     else { 
      selectDate = $.fullCalendar.formatDate(date, 'yyyy-MM-dd'); 
      selectTime = $.fullCalendar.formatDate(date, 'hh:mm TT'); 
     } 
     } 
     else { 
     selectDate = $.fullCalendar.formatDate(date, 'yyyy-MM-dd'); 
     } 

     if(selectDate !="") { 
     $("#startDate").val(selectDate); 
     $('#startDate').datepicker('setValue', selectDate); 
     $("#endDate").val(selectDate); 
     $('#endDate').datepicker('setValue', selectDate); 
     } 

     if(selectTime !="") { 
     $("#startTime").val(selectTime); 
     $('#startTime').timepicker({'timeFormat': 'h:i A', 'scrollDefaultNow': true , 'forceRoundTime': true }).on('change', function(ev){ 
      $('#endTime').val(Add30Min($(this).val())); 
      $('#endTime').timepicker({'timeFormat': 'h:i A', 'scrollDefaultNow': true , 'forceRoundTime': true, 'minTime': selectTime}); 
     }); 
     $("#endTime").val(Add30Min(selectTime)); 
     $('#endTime').timepicker({'timeFormat': 'h:i A', 'scrollDefaultNow': true , 'forceRoundTime': true, 'minTime': selectTime}); 
     } 
     $("#eventId").val(""); 
     $("#mainModalHead").text("Add Event"); 
     $("#hidEditEventId").val(""); 
     $("#EventModal").modal(); 
    }, 


    eventClick: function(calEvent, jsEvent, view) { 

     var startDayName = $.fullCalendar.formatDate(calEvent.start, 'ddd'); 
     var startMonthName = $.fullCalendar.formatDate(calEvent.start, 'MMM dd'); 
     var startTime = $.fullCalendar.formatDate(calEvent.start, 'hh:mm TT'); 
     var startDetails = startDayName+", "+startMonthName+", "+startTime; 

     var endDayName = $.fullCalendar.formatDate(calEvent.end, 'ddd'); 
     var endMonthName = $.fullCalendar.formatDate(calEvent.end, 'MMM dd'); 
     var endTime = $.fullCalendar.formatDate(calEvent.end, 'hh:mm TT'); 
     var endDetails = endDayName+", "+endMonthName+", "+endTime; 

     var eventDetails = startDetails+" - "+endDetails; 
     $("#googleEventTitle").text(calEvent.title); 
     $("#googleEventBody").text(eventDetails); 
     $("#eventId").val(calEvent.id); 
     $("#hidEventName").val(calEvent.title); 
     $("#hidStartDate").val($.fullCalendar.formatDate(calEvent.start, 'yyyy-MM-dd')); 
     $("#hidStartTime").val($.fullCalendar.formatDate(calEvent.start, 'hh:mm TT')); 
     $("#hidEndDate").val($.fullCalendar.formatDate(calEvent.end, 'yyyy-MM-dd')); 
     $("#hidEndTime").val($.fullCalendar.formatDate(calEvent.end, 'hh:mm TT')); 
     $("#eventDelete").attr("disabled", false); 
     $("#eventEdit").attr("disabled", false); 
     $("#EditDeleteOperationModal").modal(); 
    }, 

    <?php } ?> 
    weekNumbers : false, 
    weekMode : 'fixed', 
    editable: false, 
    <?php if($jsonEvents !='') { ?> 
     events: <?php echo $jsonEvents; ?>, 
    <?php } ?> 
    timeFormat: 'hh:mm tt', 
    eventColor: '#3c8dbc', 
    eventTextColor: '#ffffff' 
}); 

यहां जेसन इवेंट सूची है।

$eventItems = $eventList['items']; //From Google   
$x=0; 
$events = array(); 
$startDateTime =''; 
$endDateTime =''; 
$summary = ''; 
$start = array(); 
$end = array(); 

foreach($eventItems as $item) { 
    if(isset($item['summary'])) { 

     $summary = $item['summary']; 

    } 
    $start = $item['start']; 
    if(isset($start['dateTime'])) { 

     $startDateTime = $start['dateTime']; 

    } 
    else if(isset($start['date'])) { 

     $startDateTime = $start['date']; 

    } 
    $end = $item['end']; 
    if(isset($end['dateTime'])) { 

     $endDateTime = $end['dateTime']; 

    } 
    else if(isset($end['date'])) { 

     $endDateTime = $end['date']; 

    } 

    $events[$x]['id']    = $item['id'];   
    $events[$x]['title']   = $summary; 
    $events[$x]['start']   = $startDateTime; 
    $events[$x]['end']    = $endDateTime; 
    $events[$x]['allDay']   = true; 
    $events[$x]['backgroundColor'] = '#0092D0'; 
    $x++; 
} 
$jsonEvents = json_encode($events);  

}

$jsonEvents निम्नलिखित रिटर्न;

string(3742) "[{ 
    "id":"32rsm3h04dsuoikk2r1arfc3m0_20170624T160000Z","title":"Car payment $330.00 28th","start":"2017-06-24T09:00:00-07:00","end":"2017-06-24T10:00:00-07:00","allDay":true,"backgroundColor":"#0092D0"}, 
}]" 

jsonEvents मैं allDay के बारे में इस मुद्दे को पाया

$eventList = $cal->events->listEvents(
    'primary', 
    array(
     'timeMin' =>''.$pastEvents.'T01:00:00Z', 
     'timeMax' =>''.$futureEvents.'T23:59:59Z', 
     'singleEvents' => true 
    ) 
); 
$eventItems = $eventList['items']; //From Google   
$x=0; 
$events = array(); 
$startDateTime =''; 
$endDateTime =''; 
$summary = ''; 
$start = array(); 
$end = array(); 

foreach($eventItems as $item) { 
    if(isset($item['summary'])) { 

     $summary = $item['summary']; 

    } 
    $start = $item['start']; 
    if(isset($start['dateTime'])) { 

     $startDateTime = $start['dateTime']; 

    } 
    else if(isset($start['date'])) { 

     $startDateTime = $start['date']; 

    } 
    $end = $item['end']; 
    if(isset($end['dateTime'])) { 

     $endDateTime = $end['dateTime']; 

    } 
    else if(isset($end['date'])) { 

     $endDateTime = $end['date']; 

    } 

    $events[$x]['id']    = $item['id'];   
    $events[$x]['title']   = $summary; 
    $events[$x]['start']   = $startDateTime; 
    $events[$x]['end']    = $endDateTime; 
    $events[$x]['allDay']   = true; 
    $events[$x]['backgroundColor'] = '#0092D0'; 
    $x++; 
} 
$jsonEvents = json_encode($events);  

}

+0

आपको '$ jsonEvents' की सामग्री पोस्ट करनी चाहिए ... मुझे लगता है कि कोई 'स्टार्ट' और' एंड 'प्रॉपर्टी नहीं है। [दस्तावेज़ीकरण] देखें (https://fullcalendar.io/docs/event_data/Event_Object/)। –

+0

@LouysPatrice बेसेट I ने jsonEvents जोड़ा। – Kray

+0

इस प्रकार आप डेटा को दोबारा सुधारते हैं ... और यह सही दिखता है। लेकिन मेरा मतलब जेसन सामग्री को स्वयं जांचना था। 'Console.log का प्रयास करें (" "); 'यह जांचने के लिए कि कोई प्रारंभ और समाप्ति समय है या नहीं। शायद यह वहां है लेकिन ठीक से स्वरूपित नहीं है। यह आईएसओ 8601 होना चाहिए। –

उत्तर

7

तरह बनाया गया है।

start/end और allDay के उपयोग के बीच एक संघर्ष है।

documentation से

:

सब और विफल रहता है, FullCalendar लगता है की कोशिश करेंगे। यदि या तो प्रारंभ या समाप्ति मान में ISO8601 दिनांक स्ट्रिंग के हिस्से के रूप में "टी" है, तो सभी दिन गलत हो जाएंगे। अन्यथा, यह सच होगा।

तरह true के लिए यह "के लिए मजबूर" जब FullCalendar कि इस मुद्दे को पैदा कर रही है false करने के लिए इसे overide की कोशिश करता है लगता है।

शायद कि चूंकि फेंका कोई त्रुटि है एक बग के रूप में रिपोर्ट किया जा सकता है ...।
कम से कम एक त्रुटि होने से मदद मिलेगी।
मेरा सुझाव है कि आप एक बग रिपोर्ट सबमिट करें और इसके बारे में उनका उत्तर देखें। ;)


लेकिन अब के लिए, आपकी जेसन पीढ़ी सही दिखती है। आपका मुद्दा डेटा है।
जब आप आईएसओ 8601 तारों का उपयोग start/ end के रूप में करते हैं, तो पूरे दिन true पर सेट न करें।

याtrue के लिए सेट, लेकिन केवल एक start तारीख तारीख केवल, कोई समय प्रदान करते हैं ... और।
allDay सच होने के लिए end अतिप्रवाह ... इसे प्रदान न करें।

यहां एक CodePen है, मैं इसे बाहर निकालने के लिए उपयोग करता था।

+0

mmm के लिए OP देखें ... CodePen से ?? –

+0

मैंने अलडे को झूठा सेट किया है, और अब यह जेसन डेटा से काम करता है। – Kray

+0

और आप समझते हैं क्यों? मेरा मतलब है ... आप किस शर्त में झूठ बोलना चाहते हैं? –

संबंधित मुद्दे