0

The below function is working fine and I am getting response from ajax get function, the data is comming in 'res.data.value' in JSON format, Now i want to pass this data to events property of full calender in array format. If i am passing static values to events property it is working fine. Please help me as I am unable to pass 'res.data.value' value dynamically.

<script>

    $(document).ready(function() {

    var completedInterviews = function() {
        var requestParams = [];
        requestParams = {
                "url": dashboardServiceUrl + '/dashboard/widget/completedinterview',
                "requestType": "GET",
                "headers": {
                    "Accept": "application/json"
                }
        }

        var res = makeRequest(requestParams);
        res
        .done(function(res) { 
           return  [res.data.value];
        })
        .fail(function(err) {
            console.log(err);
        });

    };    

    $('#calendar').fullCalendar({
      header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay,listWeek'
      },
      defaultDate: '2018-03-12',
      editable: true,
      navLinks: true, 
      eventLimit: true, 
      events: completedInterviews(),  // I want [res.data.value] value here.
      loading: function(bool) {
        $('#loading').toggle(bool);
      }
    });

});

</script> 

/* * function to make API call using AJAX, Deffered and Promise */

function makeRequest(requestParams) {
    var headers = {
            'Authorization': 'Bearer ' + authToken
    };
    // concating extra headers
    headers = jsonConcat(headers, requestParams.headers);

    // checking return content type
    var dataType = "json";
    if(headers.Accept == "application/xml") {
        dataType = "xml";
    }

    var deferred = $.Deferred();

    var response = $.ajax({
        url: requestParams.url,
        type: requestParams.requestType,
        dataType: dataType,
        data: JSON.stringify(requestParams.params), 
        headers: headers,
        success: function(res) {
            if(res.error != null) {
                deferred.reject(res.error);
                if(res.error=="Invalid Token") {
                    //window.location.href = "";
                }
            } else {
                deferred.resolve(res);
            }
        },
        error: function(err) {
            deferred.reject(err);
        }
    });

    return deferred.promise();
}
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
wasim beg
  • 73
  • 13

1 Answers1

0

Use calendar in then statement.

<script>

    $(document).ready(function() {

    var completedInterviews = function() {
        var requestParams = [];
        requestParams = {
                "url": dashboardServiceUrl + '/dashboard/widget/completedinterview',
                "requestType": "GET",
                "headers": {
                    "Accept": "application/json"
                }
        }

        res = makeRequest(requestParams);

        //RETURN RES
        return res;

    };

    //WRAP CALENDAR WITH THEN
    completedInterviews().then(function(data){
        $('#calendar').fullCalendar({
          header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay,listWeek'
          },
          defaultDate: '2018-03-12',
          editable: true,
          navLinks: true, 
          eventLimit: true, 
          events: data,  // ADD DATA.
      loading: function(bool) {
        $('#loading').toggle(bool);
      }
    });
    });



});

</script> 
akcoban
  • 953
  • 7
  • 14