Javascript Internals

The Loop

In order to create the necessary javascript methods and functions, a loop is executed that builds a javascript file dyanmically. It is not recommended to overwrite this file.

The javascript that generates each API Doc control looks like this:

$(document).ready(function() {
   $('.action').hide();

   $('.api_heading').click(function(){
       $(this).parent().children('.action').slideToggle('slow');
   });
   $('.clear').click(function(){
       $(this).parent().children('.response').empty();
   });
   {% for api in apis %}
       {% for apiobj in api.apiobject_set.all %}
           {% for method in apiobj.apimethod_set.all %}
           $('#call_{{ method.slug }}').click(function(){
               {% if method.parameter.all %}
                   var param_url = "?";
                   var api_url = "{{ method.api_url }}";
                   {% for param in method.parameter.all %}
                   {% if param.type == 'text' %}
                       var var_{{ param.name }} = $('input#{{ method.slug }}_{{ param.name }}').val();
                       if (var_{{ param.name }} == '')
                       {
                           var_{{ param.name }} = "{{ param.default_value }}";
                       }
                       {% if param.get_or_url == 'get' %}
                       param_url = param_url + "{{ param.name }}=" + var_{{ param.name }} + "";
                       {% endif %}
                       {% if param.get_or_url == 'url' or param.get_or_url == 'delete' %}
                       api_url = api_url + "/" + var_{{ param.name }};

                       {% endif %}
                   {% endif %}
                   {% endfor %}

               {% endif %}
               var call_url = api_url + param_url + "&format=json";
               $(this).parent().children('pre').replaceWith("<pre>{{ method.get_type_display }}: <a href='" + call_url + "'>" + call_url + "</a></pre>");

               {% if method.type == 'post' or method.type == 'put' %}
               var dataString = "";
                 {% for param in method.parameter.all %}
                   {% if param.type != 'no_input' %}
                     dataString = dataString + "&{{ param.name }}=" + var_{{ param.name }};
                   {% endif %}
                 {% endfor %}
               {% endif %}

              $.ajax({
                 url: call_url,
                 dataType: 'jsonp',
                 type: "{{ method.get_type_display }}",
                 {% if method.type == 'post' or method.type == 'put' %}
                 data: dataString,

                 {% endif %}
                 processData: false,
                 statusCode: {
                    204: function() {
                        $('<h6>Response</h6><pre>204 Object Deleted</pre>').appendTo('#{{ method.slug }}_response');
                    }
                   },
                 contentType: "application/x-www-form-urlencoded",
                 success: function(data){

                   $('<h6>Response</h6><pre>' + JSON.stringify(data) + '</pre>').appendTo('#{{ method.slug }}_response');

                 },
                 error: function(jqXHR, textStatus, errorThrown){
                    if (errorThrown == "UNAUTHORIZED"){

                    $('<h6>Response</h6><pre>401 API Key is missing or incorrect</pre>').appendTo('#{{ method.slug }}_response')
                    }
                    if (errorThrown == "NOT FOUND")
                    {
                    $('<h6>Response</h6><pre>404 Object not found</pre>').appendTo('#{{ method.slug }}_response')
                    }

                 }
              });


           });
           {% endfor %}
       {% endfor %}
   {% endfor %}
 });

Table Of Contents

Previous topic

Template Customization

Next topic

Help

This Page