Conjunto de mudanças 6140 no repositório publico


Ignorar:
Timestamp:
20/03/2012 19:26:02 (8 anos atrás)
Autor:
felipetio
Mensagem:

melhorando api de graficos

Localização:
SIGI/trunk/sigi
Arquivos:
3 editados

Legenda:

Não Modificado
Adicionado
Removido
  • SIGI/trunk/sigi/apps/diagnosticos/models.py

    r6123 r6140  
    172172        ]
    173173
     174    def total_anwsers(self):
     175        from django.db import connection, transaction
     176        cursor = connection.cursor()
     177
     178        cursor.execute("""
     179          SELECT sum(1)
     180          FROM diagnosticos_resposta
     181          WHERE schema_id=%s
     182        """, [self.id])
     183
     184        return cursor.fetchone()
     185
    174186    class Meta:
    175187        ordering = ('title',)
  • SIGI/trunk/sigi/apps/diagnosticos/views.py

    r6123 r6140  
    238238        context)
    239239
     240def percentage(fraction, population):
     241    try:
     242        return "%.0f%%" % ((float(fraction) / float(population)) * 100)
     243    except ValueError:
     244        return ''
     245
    240246def grafico_api(request):
    241247    graph_url = "http://chart.apis.google.com/chart"
    242     graph_params = QueryDict("chxt=y&chbh=a&chco=A2C180,3D7930")
     248    #graph_params = QueryDict("chxt=y&chbh=a&chco=A2C180,3D7930")
     249    graph_params = QueryDict("")
    243250    graph_params = graph_params.copy() # to make it mutable
    244251
     
    250257    pergunta = get_object_or_404(Pergunta, name=pergunta_slug)
    251258
    252     if pergunta.datatype == 'many':
    253       choices = [r[1] for r in pergunta.get_choices()]
    254       graph_params.update({
    255             'cht': 'bvg',
    256             'chxt' : 'y',
    257             'chd': 't:' + ",".join(choices)
    258         })
    259     elif pergunta.datatype == 'one':
     259    if pergunta.datatype == 'one':
     260      total = sum([r[1] for r in pergunta.group_choices()])
    260261      choices = [str(r[1]) for r in pergunta.group_choices()]
     262      legend = [percentage(r[1],total) + " " + str(r[0]) for r in pergunta.group_choices()]
    261263      graph_params.update({
    262264        'cht': 'p',
    263         'chd': 't:' + ",".join(choices)
     265        'chd': 't:' + ",".join(choices),
     266        'chdl': '' + "|".join(legend),
     267        })
     268    elif pergunta.datatype == 'many':
     269      total = sum([r[1] for r in pergunta.group_choices()])
     270      percent = [str(float(r[1])*100/total) for r in pergunta.group_choices()]
     271      choices = [str(r[1]) for r in pergunta.group_choices()]
     272      legend = [str(r[0]) for r in pergunta.group_choices()]
     273      graph_params.update({
     274        'cht': 'bvg',
     275        'chxt': 'y',
     276        'chd': 't:' + ",".join(percent),
     277        'chdl': '' + "|".join(legend),
     278        'chl': '' + "|".join(choices),
    264279        })
    265280
    266281    response = {
    267         "version": "1.0",
    268282        "type": "photo",
    269283        "width": width,
     
    277291    json = simplejson.dumps(response)
    278292    return HttpResponse(json, mimetype="application/json")
    279     return redirect(response['url'])
    280 
     293
  • SIGI/trunk/sigi/templates/diagnosticos/graficos.html

    r6124 r6140  
    4444  <div id="perguntas">
    4545    <ul>
    46       {% for pergunta in perguntas%}
    47       <li>
    48         <a id="{{pergunta.name}}" href="/sigi/diagnosticos/grafico_api/?id={{pergunta.name}}">{{pergunta.title}}</a>
    49         <div id="output_{{pergunta.name}}" class="grafico">
    50           <img style="display:none"/>
    51         </div>
    52       </li>
     46      {% for pergunta in perguntas %}
     47        <li>
     48          {% if pergunta.datatype == 'many' or pergunta.datatype == 'one' %}
     49          <a id="{{pergunta.name}}" href="/sigi/diagnosticos/grafico_api/?id={{pergunta.name}}"><p>{{pergunta.title}}</p></a>
     50          <div id="output_{{pergunta.name}}" class="grafico">
     51            <img style="display:none"/>
     52          </div>
     53          {% else %}
     54          <p>{{pergunta.title}}</p>
     55          {% endif %}
     56        </li>
    5357      {% endfor %}
    5458    </ul>
Note: Veja TracChangeset para ajuda no uso do visualizador de conjunto de mudanças.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.